Javascript 基于相同id在数组中合并数组对象

Javascript 基于相同id在数组中合并数组对象,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,您好,我有一个带object的2变量,值为array object,在“test”和“test_2”中,我想根据id(如下所示)合并sku(“test”)和功能(“test_2”)。我想,对于test_2,最好的合并方式是什么?我将功能转换为值数组对象ex:feature:[{id:xxx}]首先和之后,我做合并,因为我尝试它不工作。希望这里的任何人都能帮助我。谢谢 const test = { sku: [ {id:"28282828

您好,我有一个带object的2变量,值为array object,在“test”和“test_2”中,我想根据id(如下所示)合并sku(“test”)和功能(“test_2”)。我想,对于test_2,最好的合并方式是什么?我将功能转换为值数组对象ex:feature:[{id:xxx}]首先和之后,我做合并,因为我尝试它不工作。希望这里的任何人都能帮助我。谢谢

const test = 
    {
        sku: [
            {id:"282828282", link:"ksksks.com"},
            {id:"676867868", link:"lallaa.com"},
            {id:"543454554", link:"sssss.com"},
            {id:"345473663", link:"fdfsas.com"}
        ],
      
    }

const test_2 = 
{
        panels: [
            {id:"9328492847", feature: ['282828282']},
            {id:"6756734535", feature: ['543454554', '282828282']},
            {id:"6545353453", feature: []},
            {id:"4353567688", feature: []},
        ]
}
让skuSet={};
for(设i=0;i
如果您对上述逻辑有任何疑问,请告诉我

let skuMap = {};

test.sku.map((skuData) => { skuMap[skuData.id] = skuData })
test_2.panels.map((panelData) => {
  panelData.feature = panelData.feature.map((panelFeatureId) => skuMap[panelFeatureId])
})

简单快速

你好,加里非常感谢,这真的解决了我的问题
let skuSet = {};

for (let i = 0; i < test.sku.length; i++) {
    if (!skuSet[test.sku[i].id]) {
        skuSet[test.sku[i].id] = test.sku[i];
    }
}

for (let i = 0; i < test_2.panels.length; i++) {
    let current = test_2.panels[i];
    for (let j = 0; j < current.feature.length; j++) {
        if (skuSet[current.feature[j]]){
            current.feature[j] = skuSet[current.feature[j]];
        }
    }
}

console.log(JSON.stringify(test_2));
let skuMap = {};

test.sku.map((skuData) => { skuMap[skuData.id] = skuData })
test_2.panels.map((panelData) => {
  panelData.feature = panelData.feature.map((panelFeatureId) => skuMap[panelFeatureId])
})