Javascript ES6:当ID存在时,用另一个对象的值填充对象值
如果相应的产品ID作为值存在于折扣对象中,则我希望使用数组Javascript ES6:当ID存在时,用另一个对象的值填充对象值,javascript,arrays,object,ecmascript-6,Javascript,Arrays,Object,Ecmascript 6,如果相应的产品ID作为值存在于折扣对象中,则我希望使用数组折扣中的折扣ID值填充产品的值“折扣” const products = [{ id: "05cdb75d-7984-4dbf-b0f4-d6532163b66d", name: "SANTO - Schnürstiefelette", price: 199.95, discount: 0, }, { id: "1b9b6c7e-c856-46
折扣
中的折扣ID值填充产品的值“折扣”
const products = [{
id: "05cdb75d-7984-4dbf-b0f4-d6532163b66d",
name: "SANTO - Schnürstiefelette",
price: 199.95,
discount: 0,
},
{
id: "1b9b6c7e-c856-464c-ba64-98c9dd6733b5",
name: "AIR FORCE 1 07 LV8 - Sneaker low",
price: 109.95,
discount: 0,
},
{
id: "f831aaf4-347a-458f-bb0c-21cf02aeac2e",
name: "DUFF 9.0 - Sporttasche",
price: 34.95,
discount: 0,
},
{
id: "471ad894-150b-4a2b-881c-a9a4dbc4b401",
name: "Strickpullover",
price: 20.99,
discount: 0,
},
];
const discounts = [{
id: "5791ae04-a704-4f44-808b-de5ddb8812b5",
name: "Christmas discount",
productIds: ["1b9b6c7e-c856-464c-ba64-98c9dd6733b5", "f831aaf4-347a-458f-bb0c-21cf02aeac2e"],
active: true
},
{
id: "5791ae04-a704-4f44-808b-de5ddb8812e6",
name: "Christmas discount 2",
productIds: ["05cdb75d-7984-4dbf-b0f4-d6532163b66d"],
active: true
}
];
最后,我需要它,就像:
const products = [{
id: "05cdb75d-7984-4dbf-b0f4-d6532163b66d",
name: "SANTO - Schnürstiefelette",
price: 199.95,
discount: '5791ae04-a704-4f44-808b-de5ddb8812e6',
},
...
...
通过产品和折扣数组嵌套循环,如果产品id包含在折扣数组中任何对象的ProductID数组中,请将折扣id指定给产品折扣
for (let product of products) {
for (let discount of discounts) {
if (discount.productIds.includes(product.id)){
product.discount = discount.id;
break;
}
}
}
您可以将折扣存储在
映射中
并在必要时将对象映射到新的折扣对象
var products=[{id:“05cdb75d-7984-4dbf-b0f4-d6532163b66d”,名称:“SANTO-Schnürstiefelette”,价格:199.95,折扣:0},{id:“1b9b6c7e-c856-464c-ba64-98c9dd6733b5”,名称:“空军107 LV8-运动鞋低”,价格:109.95,折扣:0},{id:“31F8AAF4-347a-458f-bb0c-21CF02AE2E”,名称:“Duche-Tasche”,价格:34.95,折扣:0},{id:“471ad894-150b-4a2b-881c-a9a4dbc4b401”,名称:“Strickpullover”,价格:20.99,折扣:0},
折扣=[{id:“5791ae04-a704-4f44-808b-de5ddb8812b5”,名称:“圣诞折扣”,产品id:[“1b9b6c7e-c856-464c-ba64-98c9dd6733b5”,“f831aaf4-347a-458f-bb0c-21cf02aeac2e”],激活:true},{id:“5791ae04-a704-4f44-808b-de5ddb8812e6”,名称:“圣诞折扣2”,产品id:[“05CD75D-B75D-bb0c-21cf02aeac2e”],
ids=折扣.reduce((m,{id,productIds})=>productIds.reduce((n,pid)=>n.set(pid,id),m),新地图);
products=products.map(p=>Object.assign({},p,ids.has(p.id)&&&{discount:ids.get(p.id)});
控制台日志(产品)代码>
.as控制台包装{max height:100%!important;top:0;}
您可以用来转换产品
数组。并检查产品是否有折扣
const products=[{id:“05cdb75d-7984-4dbf-b0f4-D6531263B66D”,名称:“SANTO-Schnürstiefelette”,价格:199.95,折扣:0,},{id:“1b9b6c7e-c856-464c-ba64-98c9dd6733b5”,名称:“空军107 LV8-运动鞋低”,价格:109.95,折扣:0,},{id:“f831aaf4-347a-458f-bb0c-21CF02AE2E”,名称:“SportDuche-Tasche”,价格:34.95,折扣:0,},{id:“471ad894-150b-4a2b-881c-a9a4dbc4b401”,名称:“Strickpullover”,价格:20.99,折扣:0,},];
const折扣=[{id:“5791ae04-a704-4f44-808b-de5ddb8812b5”,名称:“圣诞折扣”,产品id:[“1b9b6c7e-c856-464c-ba64-98c9dd6733b5”,“f831aaf4-347a-458f-bb0c-21cf02aeac2e”],激活:true},{id:“5791ae04-a704-4f44-808b-de5ddb8812e6”,名称:“圣诞折扣2”,产品id:[“05CD75B4D-464D-458f-bb0c-DE5BF-D634D6B8B8E6”];
让结果=products.map(product=>{
让折扣=折扣.find(item=>item.productid.includes(product.id));
返回{
…产品,
“折扣”:折扣?折扣。id:产品。折扣
};
});
控制台日志(结果)代码>请不要只发布代码作为答案,而是解释代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。