我的問題是如何合并物件陣列中的元素并回傳具有唯一物件的陣列。我試圖使用 reduce,但看起來我錯過了一些東西,是時候尋求提示了。所以你怎么能看到我需要合并布爾元素,其中 false 是默認值,true 是新資料,并根據名稱回傳唯一物件。謝謝你的幫助。
const arr = [
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: true,
option2: false,
option3: false,
option4: false,
option5: false
}
},
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: false,
option2: false,
option3: true,
option4: false,
option5: false
}
},
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: false,
option2: false,
option3: false,
option4: true,
option5: false
}
},
{
code: 'test2',
name: 'TEST2',
url: '/test2',
elements: {
option1: false,
option2: false,
option3: true,
option4: false,
option5: false
}
},
]
并輸出它應該是:
const arr = [
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: true,
option2: false,
option3: true,
option4: true,
option5: false
}
},
{
code: 'test2',
name: 'TEST2',
url: '/test2',
elements: {
option1: false,
option2: false,
option3: true,
option4: false,
option5: false
}
},
]
uj5u.com熱心網友回復:
假設這elements是這里唯一實際變化的東西,并且你不能切換false回true元素并將其設定為originalValue || newValue,所以是這樣的:
const arr = [
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: true,
option2: false,
option3: false,
option4: false,
option5: false
}
},
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: false,
option2: false,
option3: true,
option4: false,
option5: false
}
},
{
code: 'test1',
name: 'TEST1',
url: '/test1',
elements: {
option1: false,
option2: false,
option3: false,
option4: true,
option5: false
}
},
{
code: 'test2',
name: 'TEST2',
url: '/test2',
elements: {
option1: false,
option2: false,
option3: true,
option4: false,
option5: false
}
},
].reduce((carry, current) => {
const existing = carry.find(item => item.code === current.code);
if (!existing) {
carry.push(current);
} else {
Object.entries(current.elements).forEach(([k, v]) => {
existing.elements[k] = existing.elements[k] || current.elements[k];
});
}
return carry;
}, []);
console.log(arr);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472507.html
標籤:javascript 节点.js 数组 功能 目的
上一篇:postgress-node錯誤:系結訊息提供1個引數,但準備好的陳述句“”需要0
下一篇:隱藏側邊欄中的任何元素
