inarray有重复的数组项

时间:2013-08-15 07:58:17

标签: javascript jquery

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

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/

1 个答案:

答案 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元素。