我正在尝试使用 jquery 或 javascript 从数组中删除一个随机项,直到数组为空。每次随机项目我都需要安慰。 基本上,我将使用给定数组中的随机图像创建一个元素,直到创建所有图像为止。
这是我尝试获取随机项并从数组中删除的尝试,但它并没有遍历整个数组 - 我很难过。
"load": function(){
var imgArray = ['brain', 'mitochondria', 'microsope', 'beaker', 'beaker-2', 'scientist', 'cell', 'atom', 'dropper'];
function randomItem(array){
var arrayLength = array.length+1;
console.log(arrayLength);
for(var i = 0;i<array.length;i++){
var item = array[Math.floor(Math.random()*array.length)];
array.pop(item);
console.log(array);
}
}
randomItem(imgArray);
},
这是我的控制台输出:
10
home.js:12 ["brain", "mitochondria", "microsope", "beaker", "beaker-2", "scientist", "cell", "atom"]
home.js:12 ["brain", "mitochondria", "microsope", "beaker", "beaker-2", "scientist", "cell"]
home.js:12 ["brain", "mitochondria", "microsope", "beaker", "beaker-2", "scientist"]
home.js:12 ["brain", "mitochondria", "microsope", "beaker", "beaker-2"]
home.js:12 ["brain", "mitochondria", "microsope", "beaker"]
最佳答案
函数,Array.prototype.pop()
将从最后一个元素中删除一个元素。所以在这种情况下,你必须使用 Array.prototype.splice(indext,cnt)
,
for(var i = array.length-1;i>=0;i--){
array.splice(Math.floor(Math.random()*array.length), 1);
console.log(array);
}
因为我们正在改变数组,所以我们必须以相反的方式遍历它,这样索引就不会被折叠。
关于javascript - 如何从数组中删除随机项,然后将其从数组中删除直到数组为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36069870/