3 回答
TA贡献1886条经验 获得超2个赞
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;
}, []);
在这种情况下,创建一个单独的对象来跟踪遇到的对象 ID filterKeys。
因为array是一个数组,所以做一个 reduce 来遍历数组。如果id为 nuil 或未在 中找到filterKeys,则将该项目推入累加器并将其返回以用于下一次迭代。由于我们不关心为 null 的 id,因此它们没有效果,因此不会被过滤掉。
TA贡献1830条经验 获得超9个赞
使用下面的代码,我用你的对象数组测试(工作):
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贡献1802条经验 获得超5个赞
你可以试试这个 -
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}
添加回答
举报