使用JavaScript ES6 Reduce方法基于2个数组创建结果数组

使用JavaScript ES6 Reduce方法基于2个数组创建结果数组,javascript,arrays,ecmascript-6,reduce,Javascript,Arrays,Ecmascript 6,Reduce,您好,实际上我有两个数组(服务和提供),我正在尝试使用reduce方法基于服务id将提供数组与服务数组连接起来,我尝试了不同的方法,但没有任何效果。我无法解决此检查问题(无法连接提供数组)。请帮我解决这个问题。提前谢谢 const services = [ { cid:1, catname:'Facial', services:[

您好,实际上我有两个数组(服务和提供),我正在尝试使用reduce方法基于服务id将提供数组与服务数组连接起来,我尝试了不同的方法,但没有任何效果。我无法解决此检查问题(无法连接提供数组)。请帮我解决这个问题。提前谢谢

const services = [
                   {
                    cid:1,
                    catname:'Facial',
                    services:[
                      {
                       sid:30,
                       sname:'Fruit facial'
                      },
                      {
                       sid:33,
                       sname:'Herbal facial'
                      }
                    ]
                   },
                   {
                    cid:2,
                    catname:'Massage',
                    services:[
                      {
                       sid:40,
                       sname:'Head Massage'
                      },
                      {
                       sid:45,
                       sname:'Back Massage'
                      },
                      {
                       sid:46,
                       sname:'Face Massage'
                      }
                    ]
                   }
            ]
提供阵列-此处基于服务id(sid),我希望连接服务阵列并创建新阵列

const offer = [
               {
                 offid:1,
                 sid:'33,40'
                 offvalue : 10%
               },
               {
                 offid:2,
                 sid:'45,46',
                 offvalue : 100
               }
             ]
预期结果:

const Result = [
                   {
                    cid:1,
                    catname:'Facial',
                    services:[
                      {
                       sid:30,
                       sname:'Fruit facial'
                      },
                      {
                       sid:33,
                       sname:'Herbal facial',
                       offid:1,
                       offvalue : 10%
                      }
                    ]
                   },
                   {
                    cid:2,
                    catname:'Massage',
                    services:[
                      {
                       sid:40,
                       sname:'Head Massage',
                       offid:1,
                       offvalue : 10%
                      },
                      {
                       sid:45,
                       sname:'Back Massage',
                       offid:2,
                       offvalue : 100
                      },
                      {
                       sid:46,
                       sname:'Face Massage',
                       offid:2,
                       offvalue : 100
                      }
                    ]
                   }
           ]

如果您可以使用ES6功能,那么这应该可以:

const服务=[{
cid:1,
猫名:'面部',
服务:[{
希德:30,
sname:“水果面膜”
}, {
希德:33,
sname:“草药美容”
}],
}, {
cid:2,
猫名:'按摩',
服务:[{
希德:40,
sname:“头部按摩”
}, {
希德:45,
sname:“背部按摩”
}, {
希德:46,
sname:“面部按摩”
}],
}];
常数报价=[{
办公室:1,
希德:“33,40”,
offvalue:“10%”
}, {
办公室:2,
希德:“45,46”,
offvalue:“100”
}];
const result=services.map(val=>{
返回{
…瓦尔,
服务:val.services.map(serv=>{
//在这里,我们可以找到任何匹配的报价,然后将其数据添加到服务中。
const off=offer.find(x=>x.sid.split(“,”).includes(String(serv.sid));
如果(关闭){
serv.offid=off.offid;
serv.offvalue=off.offvalue;
}
返回服务;
}),
}
});

控制台日志(结果)您尝试了什么?请将您的代码显示为@Andy hi请检查我的链接我尝试了,因为我是JavaScript新手,所以无法完成