javascript - 创建一个数组并检查它

标签 javascript arrays random numbers

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


我查看了 Šime Vidas 的回答,它似乎有效,但我试图将其缩短为

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;

我不明白为什么这行不通。它的作用几乎相同,对吗?

最佳答案

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;
}

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

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

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

(演示 2 显示,只有当数组中不存在数字时,才会将其添加到数组中。)


顺便说一句

!is(a, n) && a.push(n);

是这个的缩写形式:

if ( is(a, n) == false ) { a.push(n); }

只有当 is(a, n) 返回 false 时,数字才会添加到数组中。


更新

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);
}

关于javascript - 创建一个数组并检查它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4800748/

相关文章:

arrays - 具有值数组的 Jmeter 属性

java - 我怎样才能让这种随机方法发挥作用?

c - 随机数创建

javascript - 如何将 'down' 属性设置为 Jquery Accordion 动画?

c# - Javascript 未在 C# 代码中触发

javascript - 反转数字的二进制值

java - 如何将不同维度的数组输入到java中的方法中

javascript - 在 HTML 中插入 JavaScript

php - 根据一组禁用词和一组禁用文件扩展名过滤文件名数组

python - 确保始终有一个平台供玩家跳跃