Javascript JS-数组中的重复元素

Javascript JS-数组中的重复元素,javascript,angularjs,Javascript,Angularjs,好吧,我无法解释我想做什么。但我可以解释whit代码 我有这个阵列: var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"},{name:"John",lastname:"Doe"}] 数组包含两个重复的元素,我想要一个只显示一次元素重复的函数 应用函数时,这将是数组的结果 var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bi

好吧,我无法解释我想做什么。但我可以解释whit代码

我有这个阵列:

var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"},{name:"John",lastname:"Doe"}]
数组包含两个重复的元素,我想要一个只显示一次元素重复的函数

应用函数时,这将是数组的结果

var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"}]

您可以使用lodash库,它提供了许多数组/对象和字符串函数

var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"},{name:"John",lastname:"Doe"}]

_.uniqWith(array, _.isEqual);//[{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"}]
上面的代码将检查每个对象的深度相等性,并创建一个唯一的数组。

文档:

您可以用老式的javascript函数实现它

var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"},{name:"John",lastname:"Doe"}]
var names = [];

array = array.filter(function (person) {
   var fn = person.name + '-' + person.lastname;
   if (names.indexOf(fn) !== -1) {
      return false;
   }
   else {
      names.push(fn);
      return true;
   }
});

console.log(array); 
// [{"name":"John","lastname":"Doe"},{"name":"Alex","lastname":"Bill"}]

最简单的方法是使用下划线

var array = [{name:"John",lastname:"Doe"},{name:"Alex",lastname:"Bill"},{name:"John",lastname:"Doe"}]  

array  = _.uniq(array , false, function(p) {
                 return p.name;
            });

使用unique to achive

尝试进行深度比较。Lodash和下划线的可能副本是不同的库。@谢谢您的输入。我认为两者只是名称不同,但在功能方面做相同的工作。