【问题标题】:Compare two arrays having objects and remove duplicates from first array比较两个具有对象的数组并从第一个数组中删除重复项
【发布时间】:2023-03-09 01:35:01
【问题描述】:

我有两个包含对象的数组。如何从第一个数组中删除第二个数组中已经存在的项目?

第一个数组:

var s = [
  {"Name": "1"},
  {"Name": "2"},
  {"Name": "3"},
  {"Name": "4"},
  {"Name": "5"},
  {"Name": "6"}
]

第二个数组:

var t = [
  {"Name": "1"},
  {"Name": "2"},
  {"Name": "3"},
  {"Name": "8"}
]

预期输出:

[
  {"Name": "4"},
  {"Name": "5"},
  {"Name": "6"}
]

【问题讨论】:

  • 你自己试过了吗?
  • 您需要了解 JavaScript 中的复合数据相等性。请参阅this Q&A 获取指导
  • 您可以将 filter() 与 some() 一起使用

标签: javascript arrays duplicates


【解决方案1】:

使用 set 和 .filter 方法的方法

var s=[
  {
    "Name": "1"
  },
  {
    "Name": "2"
  },
  {
    "Name": "3"
  },
  {
    "Name": "4"
  },
  {
    "Name": "5"
  },
  {
    "Name": "6"
  }
];

var t= [
  {
    "Name": "1"
  },
  {
    "Name": "2"
  },
  {
    "Name": "3"
  },{
    "Name": "8"
  }
];

var set = new Set();
t.forEach(obj => set.add(obj.Name));

s=s.filter(obj => !set.has(obj.Name))

console.log(s);

【讨论】:

    【解决方案2】:

    您可以将filter()some() 一起使用

    var s = [{"Name":"1"},{"Name":"2"},{"Name":"3"},{"Name":"4"},{"Name":"5"},{"Name":"6"}];
    var t = [{"Name":"1"},{"Name":"2"},{"Name":"3"},{"Name":"8"}];
    
    result = s.filter(a => !t.some(b => a.Name === b.Name));
    console.log(result);

    【讨论】:

      【解决方案3】:
      z = f(s, t);
      function f(first, second) {
          var z = [];
          for (var i = 0; i < first.length; i++) {
            var included = false;
            for (let j = 0; j < second.length; j++) {
              if(equal(first[i], second[j]))  
                included = true;
                //break; //optional     
            }   
            if(!included)
              z.push(first[i]);   
          }
      
          return z;
      }
      
      function equal(a,b){
        //however you define the objs to be equal
        return a.Name == b.Name;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-02
        • 2020-05-08
        • 2021-05-09
        • 1970-01-01
        • 2023-03-24
        • 2021-01-11
        • 2016-12-19
        • 1970-01-01
        相关资源
        最近更新 更多