0

在执行搜索以定位特定项目的索引后,我试图返回给定数组中的下一个项目。

我有以下代码可以定位索引,但它无法返回下一个值

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}

4

2 回答 2

2

改变:

myArray[i++%myArray.length]

至:

myArray[++i%myArray.length]

记住哪个是哪个的方法是,如果在++变量之前,它会在返回之前递增;如果它在变量之后,则在保存要返回的值后递增。

于 2013-11-01T22:42:47.153 回答
1

替换i++++i。前者计算旧值,i然后递增变量。

于 2013-11-01T22:42:39.760 回答