首页 > 解决方案 > 基于值的 Javascript/React 过滤数组

问题描述

{
  "team_list": ["Bob Hill", "Jack Duncan", "John List"],

  "team_data": {
    "Bob Hill": { "role": "member" },
    "Jack Duncan": { "role": "captain" },
    "John List": { "role": "member" }
  }
}

如果我有这样的对象,我如何使用 .filter() (或任何其他方法)来过滤掉角色不是“成员”的人,以便得到:

{
  "team_list": ["Bob Hill", "John List"],

  "team_data": {
    "Bob Hill": { "role": "member" },
    "John List": { "role": "member" }
  }
}

标签: javascriptarraysreactjsfilter

解决方案


在 的每个成员中team_list也有一个条目的情况下team_data,您可以执行以下操作:

const memberEntries = Object.entries(obj.team_data).filter(
  ([name, attributes]) => attributes.role !== 'member',
);

const membersOnly = {
  team_list: memberEntries.map(([name]) => name),
  team_data: Object.fromEntries(memberEntries),
}

推荐阅读