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