保持数组中最后一个元素具有相同的属性
Keeping the last element in an array with the same property
假设我有这样一个数组:
bucket.bucketList =[];
bucket.addItem = function(item) {
bucket.bucketList.push(item);
}
函数在每次鼠标滚动时将一个名为foo
this的对象压入数组:
一些 foo's
也有一个性质,foo.name = "something";
问题是,什么是最好的方法来删除所有重复基于他们的名称属性名称,同时保持最近的一个推入?
我已经在我的项目中使用jQuery,所以如果jQuery有一个比香草JS更优雅的方式来做这件事,我会更乐意使用它。
此代码删除所有重复的名称,保留数组中的最后一个。
您可以向后遍历数组并删除具有您已经看到的名称的任何项,使用对象来跟踪您已经看到的名称。通过向后遍历,您保留了最后一个,并且当您从数组中删除当前条目时无需进行任何数组索引更正:
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;
}
}
}
相关文章:
- 锚点元素的href属性自动更改
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 通过id和class属性获取元素
- 如何通过HTML+CSS中的另一个元素Selector更改元素的属性值
- 如何正确引用传递到淘汰中的当前元素的属性.JS
- javascript来显示元素属性
- 自定义HTML元素属性未显示-Web组件
- 如何使用element.myobj.prop等具有对象属性的元素
- 将特定属性动态添加到元素中
- Javascript获取具有不同id的文件数's来自没有多个属性的文件输入元素
- 为什么样式属性不适用于使用DOMParser创建的元素
- .querySelectorAll如何只获取具有所有属性的元素
- 如何使用jQuery按数据日期属性选择元素
- 使用数据属性将HTML数据复制到另一个元素
- JQuery:使用clone()生成的元素不采用原始的事件属性
- 价格滑动过滤器-隐藏父属性元素
- 未捕获的类型错误:不能读取属性'元素不存在
- 将信息存储在变量与数据属性元素中
- 添加HTML5 DATA属性元素存储在Javascript变量