如何通过单次.map调用为数组每个元素生成多个同结构对象
实现方案
可行性说明
可以实现。你原有代码的问题有两点:
- 对同一个对象的同一属性重复赋值,后写入的
receiverRole会覆盖先写入的initiatorRole - 原生
map是一对一映射规则,单次遍历默认只能返回一个值,我们可以配合数组扁平化逻辑实现一对多的输出需求
代码实现
方案1:map + flat 组合
const roles = data.map(d => [ { role: d.initiatorRole }, { role: d.receiverRole } ]).flat()
方案2:单次flatMap调用(更简洁)
flatMap本质是执行完map操作后自动做一层数组扁平化,单次调用即可得到目标结果:
const roles = data.flatMap(d => [ { role: d.initiatorRole }, { role: d.receiverRole } ])
如果需要兼容ES2019之前的运行环境,优先选择map+flat的方案即可。两种方案输出的结果都和你期望的格式完全一致,可直接用于后续的去重、追加数据操作。
内容的提问来源于stack exchange,提问作者kalmdown
相关产品推荐
相关产品推荐

