比方说,我有这样的数组:如何获得第二次出现的位置?
var a = [1,2,99,3,4,99,5];
我想获得第二99
的位置,这样的:
a.indexOf(99, 2) // --> 5
然而在indexOf
第二个参数只是告诉何处开始搜索。有没有内置的功能来做到这一点?如果不是,你会怎么做?
谢谢!
比方说,我有这样的数组:如何获得第二次出现的位置?
var a = [1,2,99,3,4,99,5];
我想获得第二99
的位置,这样的:
a.indexOf(99, 2) // --> 5
然而在indexOf
第二个参数只是告诉何处开始搜索。有没有内置的功能来做到这一点?如果不是,你会怎么做?
谢谢!
只有indexOf
和lastIndexOf
。你可以遍历它:
var a = [1,2,99,3,4,99,5];
var matches = []
for (var i=0; i<a.length; i++){
if (a[i] == 99) {
matches.push(i)
}
}
console.log(matches); // [2, 5]
如果你总是希望第二次出现简的方法也不错:
a.indexOf(99, a.indexOf(99) + 1)
的indexOf
调用右边找到的第一次出现,+1
然后将搜索限制在遵循它的元素。
没有内置的功能,但你可以很容易地创建自己的,通过反复应用indexOf
:
function indexOfOccurrence(haystack, needle, occurrence) {
var counter = 0;
var index = -1;
do {
index = haystack.indexOf(needle, index + 1);
}
while (index !== -1 && (++counter < occurrence));
return index;
}
// Usage
var index = indexOfOccurrence(a, 99, 2);
但Matt's solution可能更为有用。
对不起,你是对的 –
'a.indexOf(99,a.indexOf(99)+1)' –