javascript - 根据 Javascript 中不同的搜索属性值数组匹配数组中的一组对象
问题描述
有没有更好的方法来根据特定属性的一组可能值过滤对象数组?
这可行,但似乎有点笨拙。
const all = [
{id: 1}, {id: 2}, {id: 3} ...
]
const ids = [2, 3];
const selected = (all, ids) =>
all.filter(obj => ids.map(id => id === obj.id).some(match => match));
selected(all, ids);
// [{id: 2}, {id: 3}]
在 Python 中,它会是这样的:
selected = [obj for obj in all if obj.id in ids]
解决方案
Array.filter()
您可以简单地使用and过滤掉数组Array.includes()
:
const all = [ {id: 1}, {id: 2}, {id: 3} ];
const ids = [2, 3];
const selected = (all, ids) => all.filter(obj => ids.includes(obj.id));
console.log(selected(all,ids));
推荐阅读
- c++ - 解释默认 priority_queue::top() 的行为?
- python - 我使用输入、映射和 int 的非常基本的代码让我感到“TypeError:'str' object is not callable”
- jekyll - jekyll GitHub Page 页面未加载资产
- apache - AJP 连接失败
- c - 硬件如何知道变量是正数还是负数?
- swift - 具有已发布枚举的用户默认值
- angular - 不同固定大小项目的角度虚拟滚动策略
- html - 如何在页脚中对齐我的 Instagram 提要?
- python - 如何在 .wav 文件的末尾添加几秒钟的静音?
- firebase - 如何在 Flutter 中使用带有路由的 firebase 初始化