映射对象数组并按属性筛选出数组



我有一个问题,过滤具有对象数组的对象的最佳方法是什么,我想返回一个具有匹配属性的对象

const test = Object.keys(repo).map((keyName, i) => {
   if(repo[keyName].name === post_name) {
     console.log(repo[keyName])
   } 
})

上面的代码有效,但我觉得这不是实现它的最佳方式,也许有人有更好的方法来解决这个问题。

如果要过滤现有数组并创建新数组,则应使用 .filter .仅当您从现有数组中的每个元素创建另一个数组时才使用 .map - 不要将其用于副作用。

您可以使用 Object.values 而不是 Object.keys ,因为看起来您只关心值:

const test = Object.values(repo).filter(({ name }) => name === post_name);

然后,您将拥有一个具有匹配name的对象数组。

如果您知道只有一个匹配的对象,请改用.find

const match = Object.values(repo).find(({ name }) => name === post_name);

最新更新