我希望有一个javascript函数(显示列表的元素),每次调用此函数时,它都返回list的不同元素。所以,我调用它并显示第一个元素,我再次调用它并显示第二个等等......有没有办法做到这一点?
答案 0 :(得分:1)
使用generator,例如
function* nextInList(list) {
var i = 0;
while (i < list.length)
yield list[i++];
}
var gen = nextInList([10,9,8,7,6,5,4,3,2,1]);
gen.next().value // 10
gen.next().value // 9
// ...
答案 1 :(得分:1)
您可以使用MDN的精湛示例Iterators并将其用于数组。
对于每个间隔,使用next()
调用迭代器,然后检查该值。如果完成,请清除间隔或显示属性。
function makeIterator(array) {
var nextIndex = 0;
return {
next: function () {
return nextIndex < array.length ?
{ value: array[nextIndex++], done: false } :
{ done: true };
}
};
}
var array = [1, 2, 5, 9, 10, 42, 43, 777],
iterator = makeIterator(array),
interval = setInterval(function () {
var i = iterator.next();
if (i.done) {
clearInterval(interval);
} else {
console.log(i.value);
} // this value is for demo purpose
}, 1000); // for a minute interval change to 60000
答案 2 :(得分:0)
您可以使用下面的功能然后显示
来对阵列进行随机播放function shuffle(array) {
var currentIndex = array.length, temporaryValue, randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}