首页 > 解决方案 > Lodash - 选择不在数组中的元素

问题描述

我有以下数组:

[
  {
    id: 1
  },
  {
    id: 2
  },
  {
    id: 3
  },
  {
    id: 4
  }
]

每 5 秒我的应用程序会收到一个新数组,我需要比较下一个数组之间的差异......

所以下一个数组是:

[
  {
    id: 1
  },
  {
    id: 2
  },
  {
    id: 4
  }
]

如何与前一个进行比较并获得一个包含排除项的数组?

[
  {
    id: 3
  }
]

正确的问题

Lodash - 不同身份的DifferenceBy

标签: javascriptlodash

解决方案


如果您想differenceBy基于. 否则你可以使用idid_.differenceWith(prev, next, _.isEqual)

const prev = [{"id":1},{"id":2},{"id":3},{"id":4}]
const next = [{"id":1},{"id":2},{"id":4}]

const diff = _.differenceBy(prev, next, 'id')
console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>

如果您想检查不同的键或 id 道具名称,您可以使用differenceWith并通过自定义相等检查功能。

const prev = [{"id":1},{"id":2},{"id":3},{"id":4}]
const next = [{"contact_id":1},{"contact_id":2},{"contact_id":4}]

const checkId = (prev, next) => {
  return prev.id == next.contact_id
}

const diff = _.differenceWith(prev, next, checkId)
console.log(diff)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>


推荐阅读