如何对对象的多个直接子数组内所有元素仅执行一次map遍历?
实现代码
你可以通过Object.values提取所有子数组,拍平后映射提取指定字段即可,完整代码如下:
const frenchList = { u: [{ id: 1, rating: 5, name: 'Uranophobie', description: 'Peur des cieux.', }, { id: 2, rating: 5, name: 'Urinophobie', }], v: [{ id: 3, rating: 5, name: 'Vermiphobie', description: 'Peur des vers.', }], }; // 得到所有元素打平后的结果 const flatResult = Object.values(frenchList) .flat() .map(item => ({ name: item.name, // 若需要无description时默认返回空串,可替换为 item.description ?? '' description: item.description }))
执行后flatResult的输出结构:
[ { name: 'Uranophobie', description: 'Peur des cieux.' }, { name: 'Urinophobie', description: undefined }, { name: 'Vermiphobie', description: 'Peur des vers.' } ]
如果你需要保留原对象的
u/v分组结构,可以使用以下写法:const groupedResult = Object.fromEntries( Object.entries(frenchList).map(([groupKey, itemList]) => [ groupKey, itemList.map(item => ({ name: item.name, description: item.description })) ]) )
内容的提问来源于stack exchange,提问作者fyardlest
相关产品推荐
相关产品推荐

