1, 目的
以下の配列から、4という要素が何番目にあるかを全部取得したい。
app.js
constcounts=[4,4,3,2,1,4,5,5,4,4,4,4];
2, まず
app.js
counts.indexOf(4)// 0が取得できる
これで先頭から検索して最初の1つは取れる。
一括して取りたいがうまい方法が見つからない。
3, 次に
app.js
counts.indexOf(4,2)// 5が取得できる
第二引数で範囲を指定できるので、上記のように書けば2番目以降から検索することができる。
したがって、
app.js
index1=counts.indexOf(4)index2=counts.indexOf(4,index1+1)// 0、1が取得できる
これで頭から順に2つ取得できる。
4,というわけで
これらをループさせる。
(1) 4の数を数える
app.js
constarray4=counts.filter((count)=>{returncount===4}).length
filterメソッドで4だけの配列を作ってlengthで数える
(2) 最初だけcounts.indexOf(4)
で取得する
app.js
index_4s=[]index_4=counts.indexOf(4)index_4s.push(index_4);
(3) それ以降は4の数−1
回ループ
app.js
for(leti=0;i<array4-1;i+=1){index_4=counts.indexOf(4,index_4+1)index_4s.push(index_4);}// => [0, 1, 5, 8, 9, 10, 11]