2つのオブジェクトから突合して重複している項目をオブジェクトに追加する方法!Javascriptの勉強

例えば商品リスト(itemObj)とユーザの購入するユーザ商品リスト(userObj)を突合し、商品リスト(itemObj)の中にある価格をアイテム名で突合してユーザ商品リスト(userObj)に追加したい場合があったときにどう処理すればいいのか困ったのでサンプルコードを今後の参考に残します。

サンプルコード

// 商品リスト
let itemObj = {
    data: [
        {
            itemName: "Apple",
            price: 100
        },
        {
            itemName: "Melon",
            price: 500
        },
        {
            itemName: "Kiwi",
            price: 150
        },
        {
            itemName: "Orange",
            price: 200
        },
        {
            itemName: "Mango",
            price: 1000
        },
        {
            itemName: "Peach",
            price: 300
        },
        {
            itemName: "Strawberry",
            price: 500
        },
        {
            itemName: "WaterMelon",
            price: 350
        }
    ]
};
//ユーザ商品リスト
let userObj = {
    userName: "Nakamoto",
    data: [
        {
            itemName: "Apple"
        },
        {
            itemName: "Kiwi"
        },
        {
            itemName: "Peach"
        }
    ]
};
// ユーザ商品リストと商品リストを突合してpriceを追加
if (userObj.data.length > 0) {
    for (let i = 0; i < userObj.data.length; i++) {
        for (let j = 0; j < itemObj.data.length; j++) {
            if (userObj.data[i].itemName === itemObj.data[j].itemName) {
                userObj.data[i].price = itemObj.data[j].price;
                break;
            }
        }
    }
}
console.log(userObj);

結果(簡易)

{userName: "Nakamoto", data: Array(3)}
0: {itemName: "Apple", price: 100}
1: {itemName: "Kiwi", price: 150}
2: {itemName: "Peach", price: 300}

おわり

いつもループが面倒で似たような記事を書いてしまう。いい加減慣れたいですオブジェクトとループ。

Javascript

Posted by Nakamoto