javascript - Lodash - 选择不在数组中的元素
问题描述
我有以下数组:
[
{
id: 1
},
{
id: 2
},
{
id: 3
},
{
id: 4
}
]
每 5 秒我的应用程序会收到一个新数组,我需要比较下一个数组之间的差异......
所以下一个数组是:
[
{
id: 1
},
{
id: 2
},
{
id: 4
}
]
如何与前一个进行比较并获得一个包含排除项的数组?
[
{
id: 3
}
]
正确的问题
解决方案
如果您想differenceBy
基于. 否则你可以使用id
id
_.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>
推荐阅读
- c# - 如何在 Vue + ASP.NET 中实现数据排序?
- mysql - JDBC将数据从txt文件插入MySql表
- bash - 外部函数 bash 中的 Scriptsteps 计数器
- node.js - 如何纠正此错误“TypeError:EthereumTransaction 不是构造函数”?
- c++11 - 如何使用按位运算将 3 个整数值编码为 uint16_t?
- oracle - 在比较 oracle db 中的模式时,需要忽略标识列的“开始于”序列
- sql - 如果任何 SQL 在循环内失败,如何使 ANT 构建失败
- php - 无法更新表单数据laravel
- java - 使用 Java 流根据日期间隔对列表数据进行分组并对金额字段求和
- http - 颤振http.get没有执行