オブジェクトの中の配列の重複を削除するサンプルコード! Javascriptの勉強

タイトルですでにややこしいけれど、オブジェクトの中に配列を作り、連想配列をリストのように扱っているのをよく目にします。

そしてそのリストにユニークな名前があるとして、重複している配列を削除するサンプルコードです。

重複削除 サンプルコード

// 重複を含めた素材を作成
let movies = {
    data: [{
        name: 'パラサイト',
        year: '2020'
    }, {
        name: 'グリーンブック',
        year: '2019'
    }, {
        name: 'シェイプ・オブ・ウォーター',
        year: '2018'
    }, {
        name: 'グリーンブック',
        year: '2019'
    }]
};

// 重複削除メソッドを呼びだす
let newMovies = deleteDuplication(movies);

// 重複は消えているか確認
console.log(newMovies);

//重複削除メソッド
function deleteDuplication(listMovies) {
    // 重複削除後の値をいれる新しい箱を用意
    let newListMovies = {};
    newListMovies.data = [];
    for (let i = 0; i < listMovies.data.length; i++) {
        if (i === 0) { // 最初の配列の要素はpush
            newListMovies.data.push(listMovies.data[i]);
        } else { // 最初の配列以外は重複を確認してからpush
            // sameフラグを作成
            let same = false;
            for (let j = 0; j < newListMovies.data.length; j++) {
                // リストの中身と新しいリストでnameが同じか確認
                if (listMovies.data[i].name === newListMovies.data[j].name) {
                    // 同じであればフラグをtrueにする
                    same = true;
                    // 抜ける
                    break;
                }
            }
            // 同じではなければ新しいリストへ追加
            if (!same) newListMovies.data.push(listMovies.data[i]);
        }
    }
    return newListMovies;
};

nameだけで重複を確認していますが、2つkeyの値を確認する場合は以下も参考二なるかと思います。

おわり

部屋が寒いのがなんとかならないものか。布団の中から出られなくて作業効率が悪すぎる。
Listって便利だけど、中身に何入ってるのか調べようとするとぞっとすることを最近しりました。Listに早くなれたい。

Javascript

Posted by Nakamoto