lodash - 从数组中删除具有特定“键:值”的对象
问题描述
我有一个对象数组,需要使用 lodash 删除一些具有特定键的对象:值,例如:
[
{id:1,b:22},
{id:2,b:44},
{id:3,b:56},
{id:4,b:-29}
]
我需要删除 id 为 1 和 3 的所有对象。
我知道下面的方法,但想知道是否有更短的方法:
var array = [
{id:1,b:22},
{id:2,b:44},
{id:3,b:56},
{id:4,b:-29}
];
_.remove(array, function(n) {
return _.includes([ 1,3 ], n.id);
});
解决方案
您可以使用pullAllBy
并提供要删除的元素作为第二个参数。
let data = [{id:1,b:22},{id:2,b:44},{id:3,b:56},{id:4,b:-29}]
const result = _.pullAllBy(data, [{id:1},{id:3}], 'id')
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
请注意,此方法会改变数组。如果您不希望使用_.differenceBy
使用 ES6 和箭头函数 +filter
来获取值而不是改变数组也会让你得到一些简短的版本:
let data = [{ id: 1, b: 22 }, { id: 2, b: 44 }, { id: 3, b: 56 }, { id: 4, b: -29 }]
const result = data.filter(x => ![1,3].includes(x.id))
console.log(result)
推荐阅读
- amazon-web-services - Cognito 通过 AWS lambda 函数授权用户
- python - 计算 Jacobian x Jacobian.T 的有效方法
- shell - 如何将剪贴板内容从/粘贴到 IBM Cloud Shell?
- node.js - NestJs 和 Jest:等待请求抛出 404
- sql - SQL Lag 函数和 where 子句
- node.js - sequelize 获取引用表的列值
- jmeter - 在 ISO8583 的 JMeter 上使用 JPOS 运行多个线程时出错
- c - 查找哪个分隔符导致在 C 中 strtok() 处的索引值处拆分
- python - 将子字符串替换为
子串 在美丽汤 - c - 如何在 C 中正确嵌套这些循环?