🐡
【JavaScript】配列で条件に合致する値のindexを全て取得したい
概要
あまりケースとしては多く無いと思うのですが、配列の中で条件に合致した時に合致した位置(index)を取得する時の話です。標準のメソッドではfindIndexというのが用意されているのですが、これは最初に見つかった要素のindexのみを返します。これを条件に合致した要素全てのindexを取得したい場合はどうするか、というのを書いてみます。
対応
Return index value from filter method javascriptの記事で色々な方法が紹介されていますが、flatMapを使う方法が一番短く書けるように感じました。flatMapについてはmapとflatMapという便利メソッドを理解するの記事が参考になります。
実装サンプル
配列に格納されている数値で、偶数のもののみ抽出してindexを取得して出力します。
filterIndex.js
const sampleArray = [1, 10, 4, 9, 12, 11, 15, 21, 23, 8];
const resultIndex = sampleArray.flatMap((s, i) => (s % 2 === 0 ? i : []));
console.log(resultIndex);
Discussion
flatMapというものの機能は覚えていなかったのですが、mapとfilterでも簡単でした。
コメントありがとうございます。
たしかにmapとfilterでもシンプルですね。flatMap普段使わなければ、mapとfilterで実装しても全然良さそうな気がする。