javascript - 通过与对象的键进行比较,在 javascript 中删除数组中的重复对象?

标签 javascript angularjs ionic-framework

<分区>

我有一个数组,我想删除重复的对象示例 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.filterSet

维护一组唯一键,如果该值存在于集合中,则返回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)名称

angular - 带有推送通知的 Firebase native 插件无法正常工作

javascript - 在特定时间内运行一个函数