比方說,我有這樣的數組:如何獲得第二次出現的位置?
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)' –