Javascript 如何从数组中删除随机项,然后将其从数组中删除,直到数组为空

Javascript 如何从数组中删除随机项,然后将其从数组中删除,直到数组为空,javascript,jquery,arrays,for-loop,Javascript,Jquery,Arrays,For Loop,我试图使用jquery或javascript从数组中删除一个随机项,直到数组为空为止。我需要在每次随机项目时进行安慰。 基本上,我将使用给定数组中的随机图像创建一个元素,直到创建完所有图像 这是我尝试获取随机项并从数组中移除的结果,但它并没有穿过整个数组——我被难住了 "load": function(){ var imgArray = ['brain', 'mitochondria', 'microsope', 'beaker', 'beaker-2', 'scientist', 'c

我试图使用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);
},
函数将从最后一个元素中删除一个元素。所以在这种情况下,你必须使用

因为我们要改变数组,所以我们必须以相反的方式遍历它,这样索引就不会被折叠。

从数组中移除最后一个元素,而不是特定的元素。要删除特定索引处的元素,可以使用(请参阅:)


对于(var i=0;i的
也有问题,只需在长度大于零时创建一个随机索引和拼接

var数据=[“大脑”、“线粒体”、“微粒体”、“烧杯”、“烧杯-2”、“科学家”、“细胞”、“原子”];
while(data.length){
document.write(data.splice(data.length*Math.random()|0,1)[0]+'
');
}
非常感谢!我们肯定会深入了解有关阵列的文档。@TravisMichaelHeller很乐意帮助!:)感谢您提供其他选项。我没有想过使用while循环,因为现在我想起来这很有意义。谢谢你花时间来帮助我。我刚刚告诉尼娜,对于我正在寻找的功能,while循环将是更好的选择。刚刚看到你的更新,谢谢你的解释。从未想过反向循环。我已经有一段时间没有处理数组了,但我显然需要重新阅读它们,因为我缺乏知识。@TravisMichaelHeller您也可以像习惯一样向前循环,但首先将数组长度放入变量中:
var numItems=array.length然后
用于(变量i=0;i
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"]
for(var i = array.length-1;i>=0;i--){
  array.splice(Math.floor(Math.random()*array.length), 1);
  console.log(array);
}
while( array.length ) {
    var index = Math.floor( Math.random()*array.length );
    console.log( array[index] ); // Log the item
    array.splice( index, 1 ); // Remove the item from the array
}