鍍金池/ 問答/HTML/ 求問一個(gè)js中的循環(huán)

求問一個(gè)js中的循環(huán)

var a = new Array()
    function wa(){
        !function ya(){
        var randnum = Math.round(10*Math.random())    
        console.log(randnum)
        if(randnum in a ){
            return ya()
        }else{
        a.push(randnum)
        }
    }()
        
        console.log(a)
    }
    發(fā)現(xiàn)問題了,數(shù)字是否在數(shù)組里面不能用in來判斷,改用indexOF就正常了,不過還是想問問大神們有沒有最優(yōu)的做法啊

給一個(gè)a空數(shù)組,從1-10取隨機(jī)數(shù),取到的隨機(jī)數(shù),如果隨機(jī)數(shù)已經(jīng)存在在a數(shù)組里就返回重新取,如果不存在就加進(jìn)數(shù)組

但是在控制臺(tái)看是這樣的
圖片描述

求大神解惑??!

回答
編輯回答
怪痞

if判斷的問題,if(randnum in a)中判斷的是是否存在數(shù)組索引,而不是數(shù)組里面的值,應(yīng)該用indexof進(jìn)行判斷

2017年10月17日 12:27
編輯回答
我以為

你這邏輯看著有點(diǎn)繞,可以簡(jiǎn)單一點(diǎn)

let arr = [];
while(arr.length < 10) {
    let item = Math.ceil(10*Math.random())
    arr.includes(item) ? '' : arr.push(item);
}
2017年10月17日 06:25
編輯回答
有你在

你這里不應(yīng)該用in運(yùn)算符,你這里這個(gè)random指的是數(shù)組的下標(biāo),而不是值,這里應(yīng)該換成數(shù)組的indexOf方法

2018年8月29日 19:49
編輯回答
莫小染

樓上說的沒錯(cuò) 你的in運(yùn)算符的地方寫錯(cuò)了 下標(biāo) in 數(shù)組 意思是判斷當(dāng)前下標(biāo)在數(shù)組中有沒有值 假設(shè)你的數(shù)組是[4,5] 1 in [4,5]是true 但是2 in [4,5]就是false了 因?yàn)槟愕臄?shù)組下標(biāo)2的地方并沒有具體指 上面那個(gè)問題如果你是用jq的話 可以嘗試$.inArray方法

2018年9月11日 15:01