【问题标题】:Does array.include work on nested objects [duplicate]array.include 是否适用于嵌套对象[重复]
【发布时间】:2020-08-03 05:04:33
【问题描述】:
    {
    "identityA": {
      "_id": "5e98baf27457da339b219eb8",
      "altitude": 0,
      "startTime": "2020-04-16T20:07:00.000Z",
      "endTime": "2020-04-16T20:07:00.000Z",
      "lat": 30.66702,
      "lng": 73.12998,
      "personId": "5e95dfc46cbdd81757e47da2"
    },
    "identityB": {
      "_id": "5e98baf47457da339b219eba",
      "altitude": 0,
      "startTime": "2020-04-16T20:07:00.000Z",
      "endTime": "2020-04-16T20:07:00.000Z",
      "lat": 30.66869,
      "lng": 73.13591,
      "personId": "5e97682d517976252cdab2d1"
    },
    "dist": 0.3709439708757079,
    "id": "5e98bbb77457da339b219ed6",
    "createdAt": "2020-04-16T20:10:31.314Z",
    "updatedAt": "2020-04-16T20:10:31.314Z"
  }

这是我的数组的一个示例对象,我是否能够使用 array.includes 检测我是否已经在数组中有这个对象。这是我的检查。我的目标是不推送重复的元素

if (!finalInteractions.includes(element1)) {
   finalInteractions.push(element1);
                                           }

【问题讨论】:

  • 您需要将.find() 与对象的id 一起使用

标签: javascript arrays node.js nested-object


【解决方案1】:

Array.prototype.includes 本质上与=== 运算符的比较方式相同。所以对于对象,它通过引用而不是值进行比较。

这就是为什么使用引用调用includes 会起作用,而使用具有相同属性值但不是引用的对象调用includes 将不起作用:

const arr = [
  {
    name: 'object1'
  },
  {
    name: 'object2'
  }
];

console.log(arr.includes(arr[0])); // --> true
console.log(arr.includes({name: 'object1'})); // --> false

【讨论】:

    猜你喜欢
    • 2016-02-17
    • 2014-08-22
    • 2017-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2020-02-03
    相关资源
    最近更新 更多