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

在javascript中通过与对象的键进行比较来删除数组中的重复对象?,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我有一个数组,我想删除重复的对象,例如野牛来了2次 var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ]; 这就是我试过的 let a = beasts.indexOf(bison); console.log(a); 但它始终给出-1,这意味着物体根本不存在 请忽略对象的值,然后使用 维护唯一键的集合,如果该值存在于集合中,则返回false,否则将其添加

我有一个数组,我想删除重复的对象,例如野牛来了2次

var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ];
这就是我试过的

let a =  beasts.indexOf(bison);
console.log(a);
但它始终给出-1,这意味着物体根本不存在

请忽略对象的值,然后使用

维护唯一键的集合,如果该值存在于集合中,则返回
false
,否则将其添加到集合并返回
true

var beats=[{'ant':false},{'bison':true},{'camel':true},{'duck':false},{'bison':false}];
设集合=新集合();
让结果=beats.filter(o=>{
//获取对象的键
设key=Object.keys(o)[0];
如果(!set.has(key)){//检查集合中是否存在
//如果不存在,则将其添加到set并返回true(过滤入)
set.add(键);
返回true;
}
});
控制台日志(结果)

const beasts = ['John', 'Paul', 'George', 'Ringo', 'John'];

let beasts = [...new Set(names)];
console.log(unique); // 'John', 'Paul', 'George', 'Ringo'

要以编程方式实现这一点,请维护一个单独的数组,该数组将保存已处理野兽的名称,然后减少与已处理BeastSarray相关的原始数组

var beasts = [ {'ant':false}, {'bison':true}, {'camel':true}, {'duck':false}, {'bison':false} ];

const processedBeasts = [];
const result = beasts.reduce(function(final, current) {
  const currentBeastName = Object.keys(current)[0];
  if(!processedBeasts.includes(currentBeastName)){
    processedBeasts.push(currentBeastName);
    final.push(current);
  }
  return final;
}, []);

您还可以使用一个简单的
forEach()
循环,该循环具有
O(n)
复杂性来获得该输出

var beats=[{'ant':false},{'bison':true},{'camel':true},{'duck':false},{'bison':false}];
var resObj={};
野兽。forEach((野兽)=>{
var key=Object.keys(beast)[0];
如果(!resObj[key]){
resObj[key]=野兽;
}
});
var finalArrayRes=对象值(resObj);

控制台日志(finalArrayRes)有两个对象具有
bison
值,分别为true和false。你需要保留哪件物品?我只想移除其中任何一件谢谢much@nitish-很高兴帮助你!