创建一个数组并检查它

Sea*_*ean 1 javascript arrays random numbers

我不知道如何做到这一点,但我想做的是创建一个数组,并能够向这个数组添加新项目.由于这些项应该是一个随机数,所以当创建一个新实例时,我希望它与数组的其余部分进行检查,并确保它生成的数字不在数组中.我将如何完成这样的事情?


我看了ŠimeVidas的答案,似乎有效,但我试图缩短它

var arr = []; 

function add(a) {
var n =  ~~(Math.random() * 100);
for (var i = 0; i < a.length; i++) {
    if ( a[i] === n) { a.push(n) }
}

}

for (var i=0; i<5; i++){
    add(arr)
}

document.getElementById('output').innerHTML += arr;
Run Code Online (Sandbox Code Playgroud)

我不明白为什么这不起作用.它几乎完全相同,对吗?

Šim*_*das 5

var arr = []; 

function add(a) {
    var n =  ~~(Math.random() * 1000);
    !is(a, n) && a.push(n);
}

function is(a, n) {
    for (var i = 0; i < a.length; i++) {
        if ( a[i] === n ) { return true; }
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

add函数创建一个介于0和1000之间的随机整数,并将其添加到数组中.
is函数检查n数字是否在a数组内部.

演示: http : //jsfiddle.net/kHhMp/2/

演示2: http : //jsfiddle.net/kHhMp/3/

(演示2显示一个数字只会添加到数组中,如果它尚未包含在数组中.)


顺便说一句

!is(a, n) && a.push(n);
Run Code Online (Sandbox Code Playgroud)

这是一个简短的形式:

if ( is(a, n) == false ) { a.push(n); }
Run Code Online (Sandbox Code Playgroud)

仅当is(a, n)返回false时,才会将数字添加到数组中.


UPDATE

var arr = []; 

function add(a) {
    var n =  ~~(Math.random() * 1000),
        ok = true;

    for (var i = 0; i < a.length; i++) {
        if ( a[i] === n ) { ok = false; }
    }

    ok && a.push(n);
}
Run Code Online (Sandbox Code Playgroud)