【问题标题】:Javascript/React filtering array based on value基于值的 Javascript/React 过滤数组
【发布时间】:2021-10-08 01:30:30
【问题描述】:
{
  "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" }
  }
}

【问题讨论】:

  • 请将所有代码粘贴到这里,不要使用截图。
  • 你真的需要team_list吗?
  • 我认为这个对象配置错误,你不能在不同的名字上使用过滤器作为键,应该考虑为那个对象重新配置。
  • @Goran_Ilic_Ilke 我同意将其作为一个数组会更好,但您可以过滤一个对象,例如过滤Object.entries(),然后再次将其缩减为一个对象。
  • @Goran_Ilic_Ilke 这取决于。有时是有意义的,尤其是当对象被索引以提高性能时。

标签: javascript arrays reactjs filter


【解决方案1】:

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),
}

【讨论】:

  • @Manish Bhandari 这解决了你的问题吗?
猜你喜欢
  • 2017-11-22
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 1970-01-01
  • 2016-11-03
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
相关资源
最近更新 更多