Я хочу удалить повторяющиеся значения в массиве и получить уникальное значение - PullRequest
0 голосов
/ 13 июля 2020

, например, посмотрите на этот массив, я хочу удалить те объекты, у которых значение их «возраста» совпадает.

var array =[
{age:21,name:"sam",class="C"},
{age:24,name:"david",class="f"},
{age:45,name:"zack",class="f"},
{age:21,name:"jeff",class="g"},
{age:21,name:"marco",class="a"},
{age:26,name:"john",class="d"},
];

Я хочу получить этот результат:

[
{age:21,name:"sam",class="C"},
{age:24,name:"david",class="f"},
{age:45,name:"zack",class="f"},
{age:26,name:"john",class="d"},
];

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Вы можете использовать reduce

var array = [
{age:21,name:"sam",class:"C"},
{age:24,name:"david",class:"f"},
{age:45,name:"zack",class:"f"},
{age:21,name:"jeff",class:"g"},
{age:21,name:"marco",class:"a"},
{age:26,name:"john",class:"d"}
];

let result = array.reduce((a,v) => {
   let i = a.findIndex(person => person.age === v.age);
   if(i !== -1){
      return a;
   }
   return [...a, {...v}];
},[]);

console.log(result);
0 голосов
/ 13 июля 2020

Вы можете это сделать

var array =[
{age:21,name:"sam",class:"C"},
{age:24,name:"david",class:"f"},
{age:45,name:"zack",class:"f"},
{age:21,name:"jeff",class:"g"},
{age:21,name:"marco",class:"a"},
{age:26,name:"john",class:"d"},
];

var res = array.filter((i, index, self) => self.findIndex(k => k.age === i.age)==index);
console.log(res);

   //Another clever way with lesser complexity :)
   

  var res = array.reduce((a,v)=>{
    if(!a[v.age]){
      a[v.age] = v
    };
    return a

   },{})

  console.log(Object.values(res))
...