例えば商品リスト(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}
おわり
いつもループが面倒で似たような記事を書いてしまう。いい加減慣れたいですオブジェクトとループ。