Javascript 具有重复数组项的inarray
我使用以下代码从数组中查找下一个数组项:Javascript 具有重复数组项的inarray,javascript,jquery,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
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:您可以在此处实现阵列
原型
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());
请参见此处的工作解决方案:
请记住使用js运行,并在浏览器控制台中查看解决方案
如果需要,还可以查找prev
元素。inArray()
支持第三个参数来指定fromIndex
——在本例中,这是您需要的。第二个示例中的预期输出是什么?因此输出应该是[2,5]
?为什么不循环一个比较呢?请找到JSFIDLE链接“这需要一个数组原型的实现”不,你不需要它。正如techfoobar已经指出的那样,只需将第三个参数传递给$。inArray
也可以。@FelixKling:可能我的措辞是错误的,我会更改它。但我更喜欢proto
处理。因此,我的答案是:Current
变量应该做什么?Current
给出数组的当前索引,并使用Current
在数组中循环,直到到达最后一个元素。
2
3
1
5
6
false