Javascript 非顺序迭代数组
我正在处理一组对象(tweet),我只想在每次页面加载时迭代一定数量的对象。停止迭代的最后一次计数将被保存并在下一次页面加载时再次开始。这就是我被困的地方Javascript 非顺序迭代数组,javascript,arrays,Javascript,Arrays,我正在处理一组对象(tweet),我只想在每次页面加载时迭代一定数量的对象。停止迭代的最后一次计数将被保存并在下一次页面加载时再次开始。这就是我被困的地方 var obj1 = [{ "name": "trai" }, { "name": "beth" }, { "name": "taylor" }, { "name": "trace" }, { "name": "dad" }, { "name": "elaine" }]; var i = 5; //last ind
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++;}
}
var obj1=[{
“名称”:“trai”
}, {
“姓名”:“贝丝”
}, {
“姓名”:“泰勒”
}, {
“名称”:“跟踪”
}, {
“姓名”:“爸爸”
}, {
“姓名”:“伊莱恩”
}];
var i=5//最后一个索引。将在浏览器存储中更新和检索
var-num=2//要迭代的数字
对于(变量计数=0;计数=obj1.长度){
i=0;
}
else{i++;}
}
为什么不相应地设置开始索引
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;
}
for(var count=i;(count=obj1.length){
i=0;
}否则{
i+=num;
}
在每一页上,您都需要将结束计数器存储在localStorage中。在每个页面上,您都需要检查localStorage中的计数器是否已经存在有效值。如果没有,您可以假设这是第一次,从0开始(或您喜欢的任何值)
var obj1=[{
“名称”:“trai”
}, {
“姓名”:“贝丝”
}, {
“姓名”:“泰勒”
}, {
“名称”:“跟踪”
}, {
“姓名”:“爸爸”
}, {
“姓名”:“伊莱恩”
}];
var i=0//最后一个索引。将在浏览器存储中更新和检索
if(localStorage.getItem(“lastCounter”)的类型!=“未定义”)
{
i=parseInt(localStorage.getItem(“lastCounter”)|0;
}
var-num=2//要迭代的数字
对于(变量计数=0;计数=obj1.长度){
i=0;
}
else{i++;}
}
setItem(“lastCounter”,i);
我在确定obj1时犯了一个错误。长度被计算在内。我想如果你从零开始计数,长度是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++;}
}
var obj1=[{
“名称”:“trai”
}, {
“姓名”:“贝丝”
}, {
“姓名”:“泰勒”
}, {
“名称”:“跟踪”
}, {
“姓名”:“爸爸”
}, {
“姓名”:“伊莱恩”
}];
var i=5//最后一个索引。将在浏览器存储中更新和检索
var-num=2//要迭代的数字
var lngth=obj1.length-1//这里的长度是多少
对于(变量计数=0;计数
结果:依莲
trai从你的问题中不清楚你在解决问题的哪个方面有困难。正在发生的事情与您预期/希望发生的事情不符?@Jamiec不是另一种技术。只要本地存储。如果我保存它们并从会话中设置它们,它们就会这样做storage@Jamiec-代码中的注释表示OP将
i
持久化在浏览器存储(可能是本地存储)中,因此这在这里不应该是一个问题。@RJM似乎我陷入了一个循环中…使用JSFIDLE进行测试。我在本地试试。
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++;}
}