我已经得到了我的第一个问题所需的答案,但是现在我又遇到了同一数组的另一个问题,我正在使用getItem和setItem方法仅显示iziToast弹出窗口一次,并且在显示一次之后不再显示(因为我在setInterval函数中的函数中有以下数组,该函数每30秒运行一次,所以基本上每30秒iziToast弹出窗口就会不断弹出,我不希望这样做。
这是数组:
var alerted = localStorage.getItem('alerted') || '';
for(var i in result) {
console.log(result[i].id);
if (alerted != result[i].id) {
$('#chatAudio')[0].play();
iziToast.show({
message: result[i].notification_text,
messageColor: '#424242',
backgroundColor: '#fff',
theme: 'light',
animateInside: true,
layout: 1,
close: false,
position: 'bottomLeft',
timeout: 5000,
progressBar: false
});
localStorage.setItem('alerted', result[i].id);
}
}
答案 0 :(得分:2)
您不能仅在所需范围内循环吗?
var startIndex = 4 // 5th element
for(var i=startIndex; i < results.length; i++) {
// (...)
}
答案 1 :(得分:1)
有人在几分钟前发布了答案,它是正确的并且可以工作,但是由于某种原因它已被删除,因此我将其重新发布给可能错过它的任何人。
这里是:
for(var i in result) {
if (i < 5) continue;
console.log(result[i].id);
if (alerted != result[i].id) {
$('#chatAudio')[0].play();
iziToast.show({
message: result[i].notification_text,
messageColor: '#424242',
backgroundColor: '#fff',
theme: 'light',
animateInside: true,
layout: 1,
close: false,
position: 'bottomLeft',
timeout: 5000,
progressBar: false
});
localStorage.setItem('alerted', result[i].id);
}
}
答案 2 :(得分:1)
MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in)说:
注意:for ... in不应用于遍历其中 索引顺序很重要。
看来您的订单很重要。
仍然可以通过以下方式检查迭代次数:
result.indexOf(i)
所以您可以在迭代索引<4时继续这样:
if(result.indexOf(i) < 4) continue;
答案 3 :(得分:0)
for (let i = 4; i < result.length; i++) {
console.log(result[i]);
}