假设我有16个数字,范围是0到15.它们位于一个数组中。我想要实现的是以下数组:
我将称之为masterarray的数字只能使用一次。因此,数组x保持1,5和7,数组y保持2,9(这些应该是完全随机的)。
我了解我可以使用indexOf
和splice
从数组中获取和删除项目。但是,如何从阵列中获取随机数,同时从列表中删除它们呢?
在此过程中,当阵列被改变时,foreach不会去。根据我的理解,for循环也是如此。
我怎样才能做到这一点?
答案 0 :(得分:0)
这是一种非随意的方法......
var master = [], arr1=[], arr2=[], arr3=[], arr4=[], arr5=[], arr6=[], i=1;
for(i; i<16;i++){ // populating "master" array
master.push(i);
}
while(master.length>0){
var num =master.splice(Math.floor(Math.random()*master.length),1)[0];
if (master.length>11){
arr1.push(num);
continue;
}
if(master.length>9){
arr2.push(num);
continue;
}
if(master.length>6){
arr3.push(num);
continue;
}
if(master.length>4){
arr4.push(num);
continue;
}
if(master.length>2){
arr5.push(num);
continue;
}
else {
arr6.push(num);
}
}
console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(arr4);
console.log(arr5);
console.log(arr6);