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)
我不明白为什么这不起作用.它几乎完全相同,对吗?
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)
| 归档时间: |
|
| 查看次数: |
420 次 |
| 最近记录: |