3 回答

TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個(gè)贊
const filterKeys = {};
const filtered = arr.reduce((acc, item) => {
if (item.id === null || !(item.id in filterKeys)) {
filterKeys[item.id] = true;
acc.push(item);
}
return acc;
}, []);
在這種情況下,創(chuàng)建一個(gè)單獨(dú)的對象來跟蹤遇到的對象 ID filterKeys。
因?yàn)閍rray是一個(gè)數(shù)組,所以做一個(gè) reduce 來遍歷數(shù)組。如果id為 nuil 或未在 中找到filterKeys,則將該項(xiàng)目推入累加器并將其返回以用于下一次迭代。由于我們不關(guān)心為 null 的 id,因此它們沒有效果,因此不會(huì)被過濾掉。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用下面的代碼,我用你的對象數(shù)組測試(工作):
arr.forEach(function (item) {
if (item.id == null) {
result.push(item);
}
else {
var index = result.findIndex(x => x.id == item.id);
if (index == -1)
{
result.push(item);
}
}
});
console.log(result)

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以試試這個(gè) -
const array = [{ id: 6652, value: 'erger' },{ id: 6652, value: 'sdfs' },{ id: 6653, value: 'sdgdfg' },{ id: 6000, value: 'trgd' },{ id: 6667, value: 'asdf' },{ id: 6667, value: 'fdg' },{ id: 6668, value: 'dfgr' },{ id: null, value: 'fg' },{ id: null, value: 'dfgdf' },{ id: null, value: 'fg' },{ id: null, value: 'dfgdf' },];
let index = 0;
const result = Object.values(
array.reduce(
(acc, curr) =>
curr.id === null ? { ...acc, [index++]: curr } : { ...acc, [curr.id]: curr },
{}
)
);
console.log(result);
.as-console-wrapper {min-height: 100%; top: 0}
添加回答
舉報(bào)