如果我有一个阵列;
var array = [item1, item2, item3, item4, item5];
我如何按顺序归还每件商品?
我尝试了以下操作但随机返回项目,它可以重复已经显示的内容。但是如何获得它以便不重复这些项目?
var randomReturn = array[Math.floor(Math.random() * array.length)];
答案 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);
然后如果你想以随机顺序返回它,按照下面的回答提到它。
定义上述答案中定义的随机播放功能,并在您的代码中调用它。
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)
请在下面找到一个方法,只需返回一次,不重复。选择后,将从数组中删除每个项目,并对其余项目进行新的随机选择。
我使用这个原则来随机化整个数组:
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;