Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6:当ID存在时,用另一个对象的值填充对象值_Javascript_Arrays_Object_Ecmascript 6 - Fatal编程技术网

Javascript ES6:当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作为值存在于折扣对象中,则我希望使用数组
折扣
中的折扣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:产品。折扣
};
});

控制台日志(结果)请不要只发布代码作为答案,而是解释代码的作用以及它如何解决问题。带有解释的答案通常质量更高,更容易吸引选票。