🐡

【JavaScript】配列で条件に合致する値のindexを全て取得したい

1 min read 2

概要

あまりケースとしては多く無いと思うのですが、配列の中で条件に合致した時に合致した位置(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);