如何按顺序和一次显示数组中的项目?

时间:2015-07-31 11:00:42

标签: javascript arrays

如果我有一个阵列;

var array = [item1, item2, item3, item4, item5];

我如何按顺序归还每件商品?

我尝试了以下操作但随机返回项目,它可以重复已经显示的内容。但是如何获得它以便不重复这些项目?

var randomReturn = array[Math.floor(Math.random() * array.length)];

4 个答案:

答案 0 :(得分:0)

function getNext(arr) {
    return arr.splice(0, 1)[0];
}
function getRandom(arr) {
    return arr.splice(Math.floor(Math.random() * arr.length), 1)[0];
}

第一个函数按顺序返回,第二个函数随机返回。它们从不重复元素,但它们会修改原始数组。

答案 1 :(得分:0)

使用plain for循环和indexOf,可以过滤掉重复项

  var array = [item1, item2, item3, item4, item5];
    var tempArray=[];

    for(var i=0;i<array.length;i++){
        if(tempArray.indexOf(array[i])){
         tempArray.push(array[i]);
        }
    }

console.log(tempArray);

然后如果你想以随机顺序返回它,按照下面的回答提到它。

How can I shuffle an array?

定义上述答案中定义的随机播放功能,并在您的代码中调用它。

shuffle(tempArray);

答案 2 :(得分:0)

返回后,如何从数组中删除该项?这样,相同的值只会返回一次。

var array = ["item1", "item2", "item3", "item4", "item5"];

function getRandomItem(){
    var randomIndex = Math.floor(Math.random() * array.length);
    var returnValue = array[randomIndex]
    array.splice(randomIndex, 1);
    return returnValue;
}

答案 3 :(得分:0)

请在下面找到一个方法,只需返回一次,不重复。选择后,将从数组中删除每个项目,并对其余项目进行新的随机选择。

我使用这个原则来随机化整个数组:

&#13;
&#13;
        var randomIndex
        var array = ["item1", "item2", "item3", "item4", "item5"];
        var randomArray = [];
        for (var i = 0, count = array.length; i < count; i++) {
            randomIndex = Math.floor(Math.random() * array.length);
            randomArray.push(array[randomIndex]);
            array.splice(randomIndex, 1);
        }
        document.querySelector('#out').innerHTML = JSON.stringify(randomArray, undefined, 4);
&#13;
<pre id="out"></pre>
&#13;
&#13;
&#13;