javascript - 如何在Javascript中获取不包含在另一个数组中的数组项

标签 javascript filter

我正在寻找一种算法来获取一个数组中不在另一个数组中的所有对象。所以给定这些数组:

let snap = [
             {
                "text": "pack bags",
                "Id": 0,
                "datetime": "16/10/2020 @ 21:26:2"
             }
           ];

  let data = [
                {
                  "text": "pack bags",
                  "Id": 0,
                  "datetime": "16/10/2020 @ 21:26:2"
                },
                {
                   "text": "booking tickets",
                   "Id": 1,
                   "datetime": "1/11/2020 @ 22:18:17"
                }
            ];

我想最终得到这个数组:

updateData = [
               {
                 "text": "booking tickets",
                 "Id": 1,
                 "datetime": "1/11/2020 @ 22:18:17"
               }
             ]

最佳答案

您可以使用Map对象在过滤项目时访问项目时具有O(1):

const maps = new Map(snap.map(s => [s.Id, s]));
const result = data.filter(f => !maps.get(f.Id))

一个例子:

let snap = [
  {
     "text": "pack bags",
     "Id": 0,
     "datetime": "16/10/2020 @ 21:26:2"
  }
];

let data = [
     {
       "text": "pack bags",
       "Id": 0,
       "datetime": "16/10/2020 @ 21:26:2"
     },
     {
        "text": "booking tickets",
        "Id": 1,
        "datetime": "1/11/2020 @ 22:18:17"
     }
 ];


 const maps = new Map(snap.map(s => [s.Id, s]));
 const result = data.filter(f => !maps.get(f.Id))
 console.log(result)

关于javascript - 如何在Javascript中获取不包含在另一个数组中的数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64635742/

相关文章:

matlab - 如何实现匹配过滤器

Android Intent 过滤器不显示我的应用

html - 过滤 HTML 表格

apache-flex - 弹性 : Filter HierarchicalData child rows

javascript - 用于绘制图表的 Google Visualization 无法在外部 Java 脚本文件中工作

javascript - FlipClock 倒计时器显示给定日期和时间错误

javascript - 非被动滚动事件处理程序的控制台警告

java - 让 Jersey 2.x 拒绝内容长度不正确的请求的最佳方法?

javascript - JavaScript 中 float 和非空的验证

javascript - 从 JSON 比较中排除丢失的键