JavaScript如何用map()等方法处理数组返回page id为键下标为值的结构
你现有代码的问题是仅完成了units下pages数组的扁平化提取,既没有遍历每个pages内部的元素拿到对应id和它在当前pages数组中的下标,也没有组装成你需要的键值对结构。
JS中你写的[ 100000882 => 0 ... ]这种键值对格式属于Map结构,如果你需要普通对象结构也可以参考对应写法:
方案1:使用链式flatMap + Map(完全匹配你预期的=>格式)
const pages = new Map( result.flatMap(el => el.units.flatMap(unit => unit.pages.map((page, index) => [page.id, index]) ) ) )
输出的Map结构如下:
Map(4) { 100000882 => 0, 100000912 => 0, 100000915 => 1, 100000919 => 2 }
方案2:使用链式flatMap + 普通对象
const pages = Object.fromEntries( result.flatMap(el => el.units.flatMap(unit => unit.pages.map((page, index) => [page.id, index]) ) ) )
输出的对象结构如下:
{ 100000882: 0, 100000912: 0, 100000915: 1, 100000919: 2 }
方案3:用forEach循环实现(可读性更高)
const pages = {} result.forEach(item => { item.units.forEach(unit => { unit.pages.forEach((page, index) => { pages[page.id] = index }) }) })
内容的提问来源于stack exchange,提问作者Zabs
相关产品推荐
相关产品推荐

