
配列データの中で、特定の値のindex値を取得したい場合は、findIndexで簡単に取得できる。
["a","b","c","d","e"].findIndex(e => e === "c")
> 2
しかし、array.findIndex()は、最初のindex値しか取得できない。
["a","b","a","b","a"].findIndex(e => e === "b")
> 1
デフォルト機能が無かったので、自分で関数を作って対応
関数で実装
function filterIndex(datas, value){
const res_arr = []
for(let i=0; i<datas.length; i++){
if(datas[i] === value){
res_arr.push(i)
}
}
return res_arr
}
実行サンプル
filterIndex(["a","b","a","b"],"b")
> [1, 3]
ネイティブArray関数をハック
Array.prototype.filterIndex = function(value){
const datas = this
const res_arr = []
for(let i=0; i<datas.length; i++){
if(datas[i] === value){
res_arr.push(i)
}
}
return res_arr
}
実行サンプル
["a","b","a","b"].filterIndex("b")
> [1, 3]
あとがき
関数サンプルは、common.jsなどにまとめて書いておいてライブラリ的に使うと効率的です。
ネイティブ関数をハックする方法は、以後にネイティブのこの関数名で機能追加された場合は、コンフリクト(不具合の元)になる可能性が高いので、言語仕様に注目して本番化する必要がありますが、便利に使えます。
お好みの方法で、お使い下さい。