黒橡開発室

R:050 G:044 B:040

配列のオブジェクト内の要素の重複チェック

状況

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・ファイズの重複しない要素が入った配列ができそう。問題はここから。

続くかも

参考記事

qiita.com