【问题标题】:I want to remove duplicated values in side an array and get unique value我想删除数组中的重复值并获得唯一值
【发布时间】:2020-11-02 06:45:57
【问题描述】:

例如看这个数组,我想删除那些“年龄”值相同的对象。

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"},
];

【问题讨论】:

    标签: javascript arrays object distinct-values


    【解决方案1】:

    您可以使用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);

    【讨论】:

      【解决方案2】:

      你可以这样做

      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))

      【讨论】:

        猜你喜欢
        • 2020-09-20
        • 2022-12-22
        • 1970-01-01
        • 2013-10-11
        • 2010-12-29
        相关资源
        最近更新 更多