如何按顺序和一次显示数组中的项
How to display items in an array in order and once?
如果我有一个数组;
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>
相关文章:
- ¿如何每天只显示一次特定的容器
- 谷歌图表在运行应用程序时只能显示一次
- 点击时的qtip2只显示一次
- 每个用户只显示一次放大弹出窗口
- Bootstrap Alert只显示一次
- 每次访问显示一次警报
- 每个用户仅显示一次弹出窗口
- Jquery 循环一次或在数据数组中显示一次数据
- 按钮仅显示一次图像
- 弹出窗口不会根据需要在每个会话中显示一次(如客户端所述)
- Bootstrap Modal仅显示一次
- 每隔X秒显示一次警报框,但请先等待Y秒
- jQuery UI对话框在页面上只显示一次
- 每 3 小时显示一次对话框
- 背景图像旋转器.php + jQuery每4秒显示一次随机照片
- Lightswitch HTML 自定义控件仅显示一次
- 我如何让通知栏在每个会话中仅显示一次
- 如何让网页显示一次,并且不再向用户显示
- 使我的简介页面仅按用户或计算机显示一次
- 动画 GIF 背景仅显示一次