2 回答

TA貢獻1805條經驗 獲得超10個贊
我不清楚你想要達到什么目的。
如果要將第一個數組的每個對象與另一個數組中相同位置的對象合并:
currentForm.map((obj, i) => Object.assign({}, obj, newForm[i]));

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);
添加回答
舉報