0

我正在使用以下代码从数组中查找下一个数组项:

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/

4

1 回答 1

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 属性。警告:可以修改当前属性,从而导致不可预测的结果。

这是您将得到的结果:

2 
3
1 
5 
6 
false 

请参阅此处的工作解决方案:

http://jsbin.com/ebocoz/1/edit

请记住run with js并在浏览器控制台中查看解决方案。

如果你愿意,你也可以找出prev元素。

于 2013-08-15T08:45:29.063 回答