2016-05-27 2 views
1

Хорошо, я не могу объяснить, что я пытаюсь сделать. но я могу объяснить код whit.JS - Дублирующие элементы в массиве

у меня есть этот массив:

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

массив содержит 2 элемента дублированные, я хочу функцию, которая показывает мне только один раз элемент дублировать

при применении функции это будет результатом массив

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

Попробуйте http://stackoverflow.com/a/31740263/1214800 – brandonscript

+0

Вы ищете глубокий сравнение. – Casey

+0

Возможный дубликат [Удалить дубликаты из массива JavaScript] (http://stackoverflow.com/questions/9229645/remove-duplicates-from-javascript-array) –

ответ

2

Вы можете достичь его с яваскриптом filter функции в старинке.

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"}] 
0

вы используете 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"}] 

Приведенный выше код проверяет глубокое равенство каждого объекта и создает уникальный массив.
Docs: lodash uniqWith

+0

Lodash и подчеркивание - это разные библиотеки. – zerkms

+0

@zerkms Спасибо за ваш вклад. Я думал, что оба они отличаются только по имени, но выполняют ту же работу со ссылкой на функциональность. –

0

очень простой способ использовать символ подчеркивания

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

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

использовать уникальный для того чтобы достигнуть

Смежные вопросы