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

How to display items in an array in order and once?

本文关键字:显示 一次 数组 顺序 何按      更新时间:2023-09-26

如果我有一个数组;

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

我如何按顺序返回每个项目一次?

我尝试了以下操作,但它随机返回项目,并且可以重复它已经显示的内容。但是我怎样才能使条目不重复呢?

var randomReturn = array[Math.floor(Math.random() * array.length)];
function getNext(arr) {
    return arr.splice(0, 1)[0];
}
function getRandom(arr) {
    return arr.splice(Math.floor(Math.random() * arr.length), 1)[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;
}

使用plain for loop和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);

然后如果你想以随机顺序返回,就按下面答案中提到的顺序洗牌。

如何洗牌数组?

定义上面答案中定义的shuffle函数,并在代码中调用它。

shuffle(tempArray);

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

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

        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);
<pre id="out"></pre>