如何使用map或reduce将JavaScript键值对象数组转换为字典
转换实现方法
map 方法的核心作用是生成与原数组长度一致的新数组,无法直接输出对象格式的结果,因此推荐优先使用reduce完成聚合转换,也可以通过map配合对象转换方法实现。
方法1:reduce 实现(推荐)
直接通过 reduce 的聚合能力合并所有对象的键值对:
const di = ar.reduce((acc, cur) => Object.assign(acc, cur), {});
也可以用对象展开运算符简化写法:
const di = ar.reduce((acc, cur) => ({...acc, ...cur}), {});
逻辑说明:
- reduce 第二个参数传入空对象
{}作为聚合的初始值 - 每遍历到数组中的一个对象,就将该对象的所有键值对合并到累加器
acc中 - 遍历完成后累加器就是合并完成的目标字典
方法2:map 配合 Object.fromEntries 实现
如果必须使用map方法,可以按如下写法实现:
const di = Object.fromEntries(ar.map(ob => Object.entries(ob)).flat());
逻辑说明:
- 先用
Object.entries()将每个对象转换为[键, 值]格式的二维数组 - 通过
flat()将嵌套的数组合并为一维的键值对数组 - 最后用
Object.fromEntries()将键值对数组转换为普通对象
内容的提问来源于stack exchange,提问作者K.I.
相关产品推荐
相关产品推荐

