如何创建一个javascript函数,每次调用它时都会显示列表的不同值?

时间:2016-10-19 06:21:45

标签: javascript function

我希望有一个javascript函数(显示列表的元素),每次调用此函数时,它都返回list的不同元素。所以,我调用它并显示第一个元素,我再次调用它并显示第二个等等......有没有办法做到这一点?

3 个答案:

答案 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;
}