如何将含嵌套数组的对象转换为指定结构的数组?
如何将嵌套数组的对象数组展平为指定结构?
原始数据
const data = [ { role: "admin", users: [ { name: "john", user_id: "1234", }, { name: "Peter", user_id: "4321", }, ], }, ];
目标结构
[ {role: "admin", name: "john", user_id: "1234"}, {role: "admin", name: "Peter", user_id: "4321"} ]
解决方案
方法一:使用flatMap结合map
flatMap会先映射数组元素,再自动展平结果,是处理这类嵌套结构的高效方式:
const result = data.flatMap(item => item.users.map(user => ({ role: item.role, ...user })) ); console.log(result);
方法二:使用reduce手动累加
如果需要更精细的流程控制,可通过reduce逐步合并结果:
const result = data.reduce((acc, item) => { const userEntries = item.users.map(user => ({ role: item.role, ...user })); return acc.concat(userEntries); }, []); console.log(result);
方法三:普通双层for循环
基础写法,逻辑直观易懂:
const result = []; for (const group of data) { for (const user of group.users) { result.push({ role: group.role, ...user }); } } console.log(result);
内容的提问来源于stack exchange,提问作者João Pires
相关产品推荐
相关产品推荐

