亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

合并兩個數組并保留附加字段(數組對象之間的差異)

合并兩個數組并保留附加字段(數組對象之間的差異)

千巷貓影 2023-05-11 16:30:38
我找不到一種干凈的方法來合并兩個數組并保留其他字段,即數組對象之間的區別。  const currentForm = [    {      name: "username",      type: "string",      info: "enter username",      value: "test"    },    {      name: "password",      type: "aes",      info: "enter password",      value: "pass"    }  ];  const newForm = [    {      name: "username",      type: "string",      info: "enter username"    }  ];合并后我想要這個數組:  const currentForm = [    {      name: "username",      type: "string",      info: "enter username",      value: "test"    }  ];我用一個復雜的函數實現了這個,但我認為它可以用 es6 語法輕松實現。工作示例:https ://codesandbox.io/s/merged-arrays-18m1t?file=/src/App.js
查看完整描述

2 回答

?
holdtom

TA貢獻1805條經驗 獲得超10個贊

我不清楚你想要達到什么目的。

如果要將第一個數組的每個對象與另一個數組中相同位置的對象合并:

currentForm.map((obj, i) => Object.assign({}, obj, newForm[i]));


查看完整回答
反對 回復 2023-05-11
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

如果name是每個對象的唯一鍵,我們可以執行以下操作。

  • 首先,我們用array.map()合并所有同名的字段?。

    • 我們使用array.find在另一個數組中獲取相同的字段。

    • 我們使用析構合并兩個對象

  • 然后我們用Array.filter()過濾掉我們不再擁有的字段

    • 要查看對象是否存在于新數組中,我們使用array.some()返回一個布爾值作為結果,我們可以將其傳回 filter 方法。

const currentForm = [

? {

? ? name: "username",

? ? type: "string",

? ? info: "enter username",

? ? value: "test"

? },

? {

? ? name: "password",

? ? type: "aes",

? ? info: "enter password",

? ? value: "pass"

? }

];


const newForm = [

? {

? ? name: "username",

? ? type: "string",

? ? info: "enter username"

? }

];


const mergeForms = (firstForm, secondForm) => {

? // Merge all fields

? const mergedFields = firstForm.map((obj) => ({...obj, ...secondForm.find(({ name }) => obj.name === name)}));

? // Filter out fields we no longer have

? const fieldsToKeep = mergedFields.filter((obj) => newForm.some(({ name }) => obj.name === name));

? // Return fields

? return fieldsToKeep;

};


// Merge 2 forms

const mergedForm = mergeForms(currentForm, newForm);


console.log(mergedForm);


查看完整回答
反對 回復 2023-05-11
  • 2 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號