如果JavaScript中已存在对象参数值,则从数组中删除对象
除了针对我的情况使用双 for 循环之外,我无法找到最佳解决方案。
假设我有一个数组对象:
let array = [{param1:"A", param2:"B"}, {param1:"C", param2:"D"},{param1:"A", param2:"E"}]
param1除了使用两个 forloops 之外,如何根据值删除重复项?
到目前为止,我使用以下方法检测重复项:
const param1Values = new Set(array.map(item => item.param1));
const hasDuplicates = paramValues.size != array.length;
我该如何清洁,array所以我只有:
[{param1:"A", param2:"B"}, {param1:"C", param2:"D"}]
编辑
我们想保留第一个实例param1并删除其余的
回答
您可以使用 aSet并在集合上使用闭包过滤数组。
const
array = [{ param1: "A", param2: "B" }, { param1: "C", param2: "D" }, { param1: "A", param2: "E" }],
result = array.filter(
(seen => ({ param1 }) => !seen.has(param1) && seen.add(param1))
(new Set)
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }