javascript - 从比较数组中返回数组_lodash
问题描述
let a = [{
a:1,
b:3,
c:[1, 2, 6]
},
{
a:3,
b:10,
c:[2, 5, 4]
},
{
a:4,
b:3,
c:[7, 12, 6]
},
{
a:4,
b:12,
}]
let b = [2, 6]
我想从与 b 数组匹配的对象返回一个数组。
我用了 :
lodash.forEach(b , (value)=>{
lodash.filter(a, {c: value})
}
但这不起作用。我试图简化我的代码以便更好地理解。
解决方案
您可以通过查看 的值b
是否包含在 中来过滤数组c
。
var a = [{ a: 1, b: 3, c: [1, 2, 6] }, { a: 3, b: 10, c: [2, 5, 4] }, { a: 4, b: 3, c: [7, 12, 6] }, { a: 4, b: 12 }],
b = [2, 6],
result = a.filter(({ c = [] }) => b.some(v => c.includes(v)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
为了只获取完全匹配的项目,您可以使用Array#every
而不是Array#some
.
var a = [{ a: 1, b: 3, c: [1, 2, 6] }, { a: 3, b: 10, c: [2, 5, 4] }, { a: 4, b: 3, c: [7, 12, 6] }, { a: 4, b: 12 }],
b = [2, 6],
result = a.filter(({ c = [] }) => b.every(v => c.includes(v)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- ssrs-2012 - SSRS 另存为 Excel 显示页眉行
- maven - 如何使用 Ansible 脚本将构建的 jar 从 Jenkins 复制到远程服务器?
- jsf - 在 CDI 事件上从 bean 调用 PrimeFaces.current().ajax().update(...) 时出现 NullPointerException
- c++ - 根据单元格名称替换 QTableWidget 中的一行
- php - 如何构建正确的数据结构以进行 SOAP 调用?
- git - 如何在 .gcloudignore 中包含在 .gitignore 中被忽略的文件
- java - 为什么 Spring Boot 1.5 @Controller 中的 String 参数始终为空?
- java - mapstruct 没有在双向 OneToMany 上正确设置关系
- python - keras.evaluate 是否使用 keras.predict
- laravel - Laravel Virgin:在 phpunit 集成测试中设置和销毁数据库