この配列があるとしましょう:
var a = [1,2,99,3,4,99,5];
99
次のような2 番目の位置を取得したいと思います。
a.indexOf(99, 2) // --> 5
ただし、 の 2 番目の引数はindexOf
、検索を開始する場所を示すだけです。これを行うための組み込み関数はありますか?そうでない場合、どのようにしますか?
ありがとう!
この配列があるとしましょう:
var a = [1,2,99,3,4,99,5];
99
次のような2 番目の位置を取得したいと思います。
a.indexOf(99, 2) // --> 5
ただし、 の 2 番目の引数は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]
常に 2 番目のオカレンスが必要な場合は、Jan の方法も適しています。
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 のソリューションの方が便利かもしれません。