gpt4 book ai didi

javascript - 根据其中一个键删除重复的对象

转载 作者:行者123 更新时间:2023-12-05 02:27:27 24 4
gpt4 key购买 nike

我有一个数组,其中只有对象,我想根据它们的键值之一删除重复的对象,该键值是 val.js.url 但想让它成为最新的剩余对象在重复的对象中,所以我基本上在我的代码中使用了 reverse()

我的数组:

[
{
"id": "js_1oc3uiteki22",
"tab": {
"title": "title 1",
"url": "http://google.com"
},
"js": {
"initiator": "https://google.com",
"url": "http://url.com"
}
},
{
"id": "js_1oc3uiteki22",
"tab": {
"title": "title 2",
"url": "http://google2.com"
},
"js": {
"initiator": "https://google2.com",
"url": "http://url.com"
}
}
]

预期结果:

[
{
"id": "js_1oc3uiteki22",
"tab": {
"title": "title 2",
"url": "http://google2.com"
},
"js": {
"initiator": "https://google2.com",
"url": "http://url.com"
}
}
]

实际上我有以下代码可以解决这个问题,但是当我需要在同一个 js 文件中使用该代码 2 次时,我猜它有点冲突并且不能很好地清除第二个数组中的重复项。

function dupfix(arr) {
return arr.reverse().filter(val => {
if (!this.hasOwnProperty(val.js.url)) {
return this[val.js.url] = true
}
return false
}, {}).reverse()
}
file = dupfix(file)

那么,我该如何修复上面的代码,或者有没有其他更好的方法来做到这一点?谢谢。

最佳答案

我发现其中一个非常快, https://stackoverflow.com/a/61027136

function removeDuplicates(array, key) {
let lookup = {};
array.forEach(element => {
lookup[element[key]] = element
});
return Object.keys(lookup).map(key => lookup[key]);
};

removeDuplicates(array,'objectKey');

关于javascript - 根据其中一个键删除重复的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73173848/

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