在javascript中通过与对象的键进行比较来删除数组中的重复对象?
我有一个数组,我想删除重复的对象,例如野牛来了2次在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,否则将其添加
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-很高兴帮助你!