假設我有一個這樣的物件串列:
let b = [
{
name: "test1",
connectedTo: "",
},
{
name: "test1",
connectedTo: "test1.test2.test3"
},
{
name: "test2",
connectedTo: "",
},
{
name: "test3",
connectedTo: "",
}
]
我想獲得沒有重復的元素name,如果有重復,也需要一個沒有 empty 的元素connectedTo。因此,從上面的示例中,我期望的結果是:
let result = [
{
name: "test1",
connectedTo: "test1.test2.test3"
},
{
name: "test2",
connectedTo: "",
},
{
name: "test3",
connectedTo: "",
}
]
uj5u.com熱心網友回復:
這是一種利用Array#reduce函式的方法:
let b = [
{
name: "test1",
connectedTo: "",
},
{
name: "test1",
connectedTo: "test1.test2.test3"
},
{
name: "test2",
connectedTo: "",
},
{
name: "test3",
connectedTo: "test1.test2",
},
{
name: "test3",
connectedTo: "",
}
];
const result = Object.values(b.reduce((acc, cur) => {
if(!acc[cur.name] || !acc[cur.name].connectedTo)
acc[cur.name] = cur;
return acc;
}, {}));
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/476387.html
標籤:javascript
