<分区>
我有一个数组,我想删除重复的对象示例 bison is coming 2 times。
var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ];
这是我尝试过的
let a = beasts.indexOf(bison);
console.log(a);
但它始终给出 -1,这意味着该对象根本不存在
请忽略对象的值
<分区>
我有一个数组,我想删除重复的对象示例 bison is coming 2 times。
var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ];
这是我尝试过的
let a = beasts.indexOf(bison);
console.log(a);
但它始终给出 -1,这意味着该对象根本不存在
请忽略对象的值
最佳答案
使用Array.filter和 Set
维护一组唯一键,如果该值存在于集合中,则返回false
,否则将其添加到集合中并返回真
。
var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ];
let set = new Set();
let result = beasts.filter(o => {
// Get the key of object
let key = Object.keys(o)[0];
if(!set.has(key)) { // check for existence in set
// if does not exist add it to set and return true (filter IN)
set.add(key);
return true;
}
});
console.log(result);
关于javascript - 通过与对象的键进行比较,在 javascript 中删除数组中的重复对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52148149/
相关文章:
angularjs - 如何在一段时间后以 Angular 或 css 隐藏 div?
javascript - 如何在AngularJS中全屏显示谷歌地图
typescript - ionic2 TypeScript 显示错误 : Cannot find name 'google' and '$' , 但谷歌地图和 jquery 仍然有效
javascript - 无法通过 AJAX 调用找到 $wpdb 变量
javascript - 如何更改 Select2 箭头图标?
javascript - Typescript - 修改拦截器以返回 config.data 时如何更改 axios 响应的类型
javascript - 使用过滤器在 Angularjs 中执行搜索后清除列表?
typescript - 在 Ionic 2 中找不到可注入(inject)名称