Javascript/React 按值过滤数组实现筛选角色为member的成员数据
JavaScript 过滤非member成员实现方案
首先定义你的原始数据:
const originalData = { "team_list": ["Bob Hill", "Jack Duncan", "John List"], "team_data": { "Bob Hill": { "role": "member" }, "Jack Duncan": { "role": "captain" }, "John List": { "role": "member" } } };
实现逻辑
你需要同时处理team_list数组和team_data对象两部分,完整实现代码如下:
// 1. 过滤得到仅role为member的成员名单 const filteredTeamList = originalData.team_list.filter(name => { // 可选链写法避免成员不存在时报错,无需兼容旧环境可以去掉? return originalData.team_data[name]?.role === 'member'; }); // 2. 过滤team_data对象,仅保留member的条目 const filteredTeamData = Object.fromEntries( Object.entries(originalData.team_data).filter(([_, userInfo]) => userInfo.role === 'member') ); // 3. 组合得到最终结果 const result = { team_list: filteredTeamList, team_data: filteredTeamData };
兼容旧环境的替代写法
如果运行环境不支持Object.fromEntries,可以用Array.reduce实现team_data的过滤:
const filteredTeamData = Object.keys(originalData.team_data).reduce((res, name) => { if (originalData.team_data[name].role === 'member') { res[name] = originalData.team_data[name]; } return res; }, {});
最终打印result即可得到你需要的输出结构。
内容的提问来源于stack exchange,提问作者noosh
相关产品推荐
相关产品推荐

