【问题标题】:Map through array of objects and filter out array by property映射对象数组并按属性过滤数组
【发布时间】:2019-06-02 21:12:03
【问题描述】:

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

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

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

【问题讨论】:

标签: javascript reactjs object


【解决方案1】:

如果要过滤现有数组并创建新数组,则应使用.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);

【讨论】:

    猜你喜欢
    • 2021-04-19
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多