如果 JavaScript 中已存在对象参数值,则从数组中删除对象

ash*_*999 1 javascript

除了针对我的情况使用双 for 循环之外,我无法找到最佳解决方案。

假设我有一个数组对象:

let array = [{param1:"A", param2:"B"}, {param1:"C", param2:"D"},{param1:"A", param2:"E"}]
Run Code Online (Sandbox Code Playgroud)

param1除了使用两个 forloops 之外,如何根据值删除重复项?

到目前为止,我使用以下方法检测重复项:

const param1Values = new Set(array.map(item => item.param1));
const hasDuplicates = paramValues.size != array.length;
Run Code Online (Sandbox Code Playgroud)

我该如何清洁,array所以我只有:

[{param1:"A", param2:"B"}, {param1:"C", param2:"D"}]
Run Code Online (Sandbox Code Playgroud)

编辑

我们想保留第一个实例param1并删除其余的

Nin*_*olz 7

您可以使用 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);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)