gpt4 book ai didi

javascript - 从数组中删除重复项的最简单方法,同时仍保留最后一个

转载 作者:行者123 更新时间:2023-11-30 05:36:16 26 4
gpt4 key购买 nike

从具有相同特定值的数组中删除重复项,同时仍保留最新的重复项的最简单方法是什么?

假设我有这个功能。

bucket.bucketList =[];

bucket.addItem = function(item) {
bucket.bucketList.push(item);
}

函数在每次鼠标滚动时将名为 foo this 的对象推送到数组中:

有些 foo 也有一个属性,

foo.name = "something";

问题是,根据属性名称删除重复项同时保留最新的项的最佳方法是什么?

所以现在的概念是删除所有重复项,除了最后一个,具有 foo.name = "example"。

PS:我已经在我的项目中使用 jQuery,所以如果 jQuery 有比 vanilla JS 更优雅的方式来做这件事,我会非常乐意使用它。

编辑:这是我的确切代码片段:

bucket.addItem = function(item) {
bucket.bucketList.push(item);
var dict = {}, item;
for (var i = bucket.bucketList.length - 1; i >= 0 ; i--) {
item = bucket.bucketList[i];
if (item.name) {
// if already in the dict, remove this array entry
if (dict[item.name] === true) {
bucket.bucketList.splice(i, 1);
} else {
// add it to the dict
dict[item.name] = true;
}
}
}
}

不幸的是,上述函数从数组中删除了所有具有相同名称属性的重复项。我想要的只是删除具有SPECIFIC 属性名称的重复项。例如:item.name ="example"

最佳答案

试试这个:

bucket.addItem = function(item) {
bucket.bucketList = bucket.bucketList.filter(function(e){
return item.name !== "example" || e.name !== "example"
});
bucket.bucketList.push(item);
}

这基本上删除了所有与当前项目同名的项目,然后将当前项目插入列表,但前提是名称为 "example"

关于javascript - 从数组中删除重复项的最简单方法,同时仍保留最后一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23625566/

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