我使用以下代码从数组中查找下一个数组项:
var srcKpi=[1,2,3,4,5,6];
var value=2;
var nextitem = srcKpi[($.inArray(value, srcKpi) + 1) % srcKpi.length];
console.log(nextitem) // 3
当数组中没有重复项时,它可以正常工作。当我尝试在数组中重复项目时,我只获得第一个出现元素,但不是实际的元素。我想得到特定值的下一个数组项。
var srcKpi=[1,2,3,1,5,6];
var value=1;
var nextitem = srcKpi[($.inArray(value, srcKpi) + 1) % srcKpi.length];
console.log(nextitem) // 2
当我把它放在一个循环中以获得下一个值时,每次我只获得2
。
我永远不会得到'5'的价值。
当数组中有重复的项目时,我有什么建议我得到的错误是获取特定元素的下一个元素?
有关更多信息:jsfiddle:http://jsfiddle.net/4LCMs/
答案 0 :(得分:0)
您可以在此处实现数组prototype
。
Array.prototype.current = 0;
var Current = Array.prototype.current;
Array.prototype.next = function() {
if (!((this.current + 1) in this)) return false;
return this[++this.current];
};
Array.prototype.prev = function() {
return this[--this.current];
};
var srcKpi=[1,2,3,1,5,6];
for(Current ===0;Current<srcKpi.length;Current++)
console.log(srcKpi.next());
现在每个Array都有prev和next方法,以及指向“current”元素的current属性。警告:可以修改当前属性,从而导致不可预测的结果。
这是你得到的结果:
2
3
1
5
6
false
请参阅此处的工作解决方案:
http://jsbin.com/ebocoz/1/edit
请记住run with js
并在浏览器控制台中查看解决方案。
如果需要,您也可以找到prev
元素。