配列のオブジェクト内の要素の重複チェック
状況
let charInfoList = [ {name: 'クウガ', form: 'マイティフォーム'}, {name: 'W', form: 'ヒートジョーカー'}, {name: 'ファイズ', form: 'アクセルフォーム'}, {name: 'クウガ', form: 'ドラゴンフォーム'}, ]
nameが重複したオブジェクトを
{ name: 'クウガ', form: [ 'マイティフォーム', 'ドラゴンフォーム' ] }
ってしたい時どうするか。
手順を考えてみた
- charInfoListをfor-inで回してあらかじめ用意したふたつのから配列に重複するもの・しないものでそれぞれより分ける
- 最初のクウガのオブジェクトのformに、重複したクウガの
form: 'ドラゴンフォーム'
の値を追加する
1つ目はこんな感じでやってみた
let tempList = []; let overLapList = []; for(index in charInfoList) { if(tempList === [] || !tempList.includes(charInfoList[index]['name'])) { tempList.push(charInfoList[index]['name']); } else { overLapList.push(charInfoList[index]['name']); } }
連想配列じゃなければここまでの手順でクウガ・W・ファイズの重複しない要素が入った配列ができそう。問題はここから。
続くかも