第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從數(shù)組中的另一個(gè)對(duì)象更新數(shù)組中的對(duì)象

從數(shù)組中的另一個(gè)對(duì)象更新數(shù)組中的對(duì)象

達(dá)令說 2021-04-25 12:57:37
在我的代碼中,我有兩個(gè)數(shù)組,第一個(gè)包含多個(gè)對(duì)象。第二個(gè)是存儲(chǔ)序列化的表單數(shù)據(jù)(映射到JSON)。因此,兩個(gè)數(shù)組都具有相同的鍵。我要實(shí)現(xiàn)的是,根據(jù)對(duì)象中的ID,根據(jù)新數(shù)組中對(duì)象的值動(dòng)態(tài)地更新原始數(shù)組中對(duì)象的值。在網(wǎng)上找到了一些示例,但很難使它們起作用。因?yàn)樗鼈冎械拇蠖鄶?shù)都顯示了任一級(jí)別的對(duì)象,但是我正在處理數(shù)組中的復(fù)雜嵌套對(duì)象。var products = [    {        Id: 1,        Name: 'Product1',        Attributes: {            Storage: 'Normal',            Size: 'Small'        }    },    {        Id: 2,        Name: 'Product2',        Attributes: {            Storage: 'Normal',            Size: 'Small'        }    }];var newData = [    {        Id: 2,        Name: 'French Fries'    },    {        Id: 1,        Attributes: {            Size: 'Medium'        }    }];預(yù)期的結(jié)果是products現(xiàn)在使用第二個(gè)數(shù)組中的值更新該數(shù)組。Output:[    {        Id: 1,        Name: 'Product1',        Attributes: {            Storage: 'Normal',            Size: 'Medium'        }    },    {        Id: 2,        Name: 'French Fries',        Attributes: {            Storage: 'Normal',            Size: 'Small'        }    }]
查看完整描述

2 回答

?
守候你守候我

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊

您可以創(chuàng)建一個(gè)組合嵌套對(duì)象的函數(shù)。然后使用map()和find()創(chuàng)建對(duì)象的組合數(shù)組。


var products = [

    {

        Id: 1,

        Name: 'Product1',

        Attributes: {

            Storage: 'Normal',

            Size: 'Small'

        }

    },

    {

        Id: 2,

        Name: 'Product2',

        Attributes: {

            Storage: 'Normal',

            Size: 'Small'

        }

    }

];


var newData = [

    {

        Id: 2,

        Name: 'French Fries'

    },

    {

        Id: 1,

        Attributes: {

            Size: 'Medium'

        }

    }

];


const haveNested = obj => Object.values(obj).some(x => typeof x === "object");


function combine(obj1,obj2){


  if(!haveNested(obj1)) return ({...obj1,...obj2})

  let res = obj1

  for(let key in obj1){

    if(typeof obj1[key] === "object"){

      res[key] = combine(obj1[key],obj2[key]);

    }

    else if(obj2[key]) res[key] = obj2[key]

  }

  return res;

}


const result = products.map(x => {

  let temp = newData.find(a => a.Id === x.Id);

  return temp ? combine(x,temp) : x;

})


console.log(result)


查看完整回答
反對(duì) 回復(fù) 2021-05-06
  • 2 回答
  • 0 關(guān)注
  • 259 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)