как получить уникальные строки из массива в угловых - PullRequest
0 голосов
/ 07 января 2019

У меня есть коллекция с некоторыми дублирующимися объектами, я хочу массив фильтров и получить уникальную коллекцию это мой массив

array=[{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'},{id:1,name:'A'},{id:3,name:'C'}];

я хочу отфильтровать, как показано ниже

array=[{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'}];



  var unique = [];
    for(let i = 0; i< this.array.length; i++){    
        if(unique.indexOf(this.array[i].id) === -1){
            unique.push(this.array[i].id);        
        }        
    }

я пробовал выше и получаю уникальные значения, но я хочу полный объект

Ответы [ 3 ]

0 голосов
/ 07 января 2019

Вы можете сделать с arrray.filter следующим образом,

var unique = {}
var array=[{"id":1,"name":'A'},{"id":"2","name":'B'},{"id":3,"name":'C'},{"id":1,"name":'A'},{"id":3,name:'C'}];
var arrFiltered = array.filter(obj => !unique[obj.id] && (unique[obj.id] = true));
console.log(arrFiltered)
0 голосов
/ 07 января 2019

Я думаю, вы почти у цели. Просто добавьте объект вместо идентификатора в массив, то есть:

unique.push(this.array[i]); 

Это должно сделать, если я понимаю твой вопрос

0 голосов
/ 07 января 2019

Вы можете сделать это с помощью уменьшить

let arr=[{id:1,name:'A'},{id:2,name:'B'},{id:3,name:'C'},{id:1,name:'A'},{id:3,name:'C'}];

let op = Object.values(arr.reduce((o,c)=>{
  if(!o[c.id]) o[c.id] = c;
  return o; }, {} ))

console.log(op);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...