迭代迭代数组

时间:2016-05-12 15:03:29

标签: javascript arrays

我正在使用一组对象(推文),我只想在每个页面加载上迭代一定数量的这些对象。最后一次计数停止迭代的位置将保存并在下一页加载时再次启动。这就是我被困住的地方。

var obj1 = [{
  "name": "trai"
}, {
  "name": "beth"
}, {
  "name": "taylor"
}, {
  "name": "trace"
}, {
  "name": "dad"
}, {
  "name": "elaine"
}];

var i = 5;  //last index.  will be updated and retrieved in browser storage
var num = 2;  //number to iterate

for (var count = 0; count < num; count++) {
    $('body').append('<div>' + obj1[i].name + '</div>');
    if (i >= obj1.length) {
        i = 0;
    }
    else {i++;}
}

3 个答案:

答案 0 :(得分:0)

为什么不相应地设置起始索引?

for (var count = i; (count < i + num) && (count < obj1.length); count++) {
    $('body').append('<div>' + obj1[count].name + '</div>');
}

if(i + num >= obj1.length) {
    i = 0;
} else {
    i += num;
}

答案 1 :(得分:0)

在每个页面上,您需要将结束计数器存储在localStorage中。在每个页面上,您需要检查localStorage中的计数器是否已存在有效值。如果没有,你可以假设这是第一次,从0(或你喜欢的任何地方)开始。

var obj1 = [{
  "name": "trai"
}, {
  "name": "beth"
}, {
  "name": "taylor"
}, {
  "name": "trace"
}, {
  "name": "dad"
}, {
  "name": "elaine"
}];

var i = 0;  //last index.  will be updated and retrieved in browser storage
if( typeof localStorage.getItem("lastCounter") != "undefined" )
{
  i = parseInt( localStorage.getItem("lastCounter") ) || 0;
}

var num = 2;  //number to iterate

for (var count = 0; count < num; count++) {
    $('body').append('<div>' + obj1[i].name + '</div>');
    if (i >= obj1.length) {
        i = 0;
    }
    else {i++;}
}
localStorage.setItem("lastCounter", i );

答案 2 :(得分:0)

我在确定obj1.length的计数方面犯了一个错误。我想如果你从零开始计算长度将是5,但长度是6.通过考虑对象的正确长度来修正它。

var obj1 = [{
  "name": "trai"
}, {
  "name": "beth"
}, {
  "name": "taylor"
}, {
  "name": "trace"
}, {
  "name": "dad"
}, {
  "name": "elaine"
}];

var i = 5;  //last index.  will be updated and retrieved in browser storage
var num = 2;  //number to iterate
var lngth = obj1.length -1;  //accounted for length here
for (var count = 0; count < num; count++) {
    $('body').append('<div>' + obj1[i].name + '</div>');

    if (i == lngth) {
        i = 0;
    }
    else {i++;}
}

结果:
伊莱恩
TRAI