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

标签 javascript jquery arrays for-loop

我正在尝试使用 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/

相关文章:

javascript - 在 Developer Console 中获取 AngularJS 的对象和变量列表

javascript - 固定 header jQuery Mobile

java - 将 File 对象添加到 File 对象数组

javascript - 使用 cherrypy 下载文件

javascript - 测量 React Native 应用程序中网络套接字使用的带宽

jquery - 提高 box-shadow 的性能

jquery - wordpress - 简码,ob_start 破坏了 jQuery

java - 为什么System类中有数组复制方法?

php - 如何将两个数组合并为一个数组?

javascript - 修复嵌套列上的 Bootstrap 填充