gpt4 book ai didi

javascript - 删除数组中具有重复属性的对象

转载 作者:行者123 更新时间:2023-11-29 16:46:24 26 4
gpt4 key购买 nike

假设我有一个这样的数组:

var arr1 = [ 1, 1, 'a', 'a' ];

我想删除重复项,这个片段很棒:

var deduped = arr1.filter(function (el, i, arr) {
return arr.indexOf(el) === i;
});

但是我得到了这个数组,我想删除具有重复属性的对象:

var obj1 = {
name: "John",
id: 1
};
var obj2 = {
name: "Moe",
id: 1
};
var obj3 = {
name: "Jane",
id: 2
};

var arr2 = [obj1, obj2, obj3];

我该如何编写一个函数来删除(在本例中)obj1obj2 中的任何一个,因为它们具有相同的 id

我不想删除两者!

JsFiddle

Reference for code snippet

提前致谢。

最佳答案

使用Array#filter使用 thisArg

thisArg, Value to use as this when executing callback.

var obj1 = {
name: "John",
id: 1
};
var obj2 = {
name: "Moe",
id: 1
};
var obj3 = {
name: "Jane",
id: 'toString'
};

var arr2 = [obj1, obj2, obj3];
var filtered = arr2.filter(function(el) {
if (!this[el.id]) {
this[el.id] = true;
return true;
}
return false;
}, Object.create(null));
console.log(filtered);

关于javascript - 删除数组中具有重复属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40784330/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com