首页 > 解决方案 > 根据 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]

标签: javascriptarraysecmascript-6

解决方案


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));


推荐阅读