我正在尝试在执行搜索以找到特定项目的索引后返回给定数组中的下一个项目。
我有以下代码来查找索引,但无法返回下一个值
var myArray = [{"id" : "51fcd6fcf22d94c881000005","creator" : true},
{"id" : "5244abaa0c11b3da22000012","creator" : false},
{"id" : "52027f4354c8a8fd33000008","creator" : false}]
function nextElement(id) {
var i = myArray.length;
while( i-- ) {
if(myArray[i].id == id) break;
}
console.log(i) <-- This returns '0' which is correct
console.log(myArray[i++%myArray.length]); <-- This returns the object value at 0 too
};
nextElement('51fcd6fcf22d94c881000005')
什么不起作用是当我运行该函数时它返回我传递给函数的对象
我希望能够将ID传递给函数并返回下一项,但如果它是数组中的最后一项,那么我希望它循环并返回第一项。
例如,如果传入的ID为52027f4354c8a8fd33000008
,那么我希望它将对象返回0,即{"id" : "51fcd6fcf22d94c881000005","creator" : true}
答案 0 :(得分:2)
变化:
myArray[i++%myArray.length]
为:
myArray[++i%myArray.length]
要记住的方法是,如果++
在变量之前,它会在返回之前递增;如果它在变量之后,则在保存值返回后递增。
答案 1 :(得分:1)
将i++
替换为++i
。前者评估为i
的旧值,然后增加变量。