如何将JS嵌套键值对数组转换为指定格式的对象数组?
实现格式转换的方案
原有代码错误原因
- 没有提前为
formated的每个子元素初始化空对象,直接访问formated[count]会得到undefined,操作undefined会抛出异常 push是数组专属方法,不能用来给对象添加属性,给对象加键值对直接用对象[键] = 值的语法即可
可直接运行的实现代码
方案1:基于原有循环逻辑修改
let formated = [] for(let item of this.pops){ // 先初始化当前子项为空对象 let curObj = {} for(let prop of item){ // 给对象添加对应键值对 curObj[prop.key] = prop.value } // 组装完成的对象推入结果数组 formated.push(curObj) }
方案2:更简洁的高阶函数写法
用map和Object.fromEntries组合实现,代码更精简:
const formated = pops.map(subArr => Object.fromEntries(subArr.map(item => [item.key, item.value])) )
Object.fromEntries可以直接把[[key1, value1], [key2, value2]]格式的二维数组转换为对应对象,配合外层遍历子数组的map方法即可直接得到目标格式结果。
内容的提问来源于stack exchange,提问作者Buddhika
相关产品推荐
相关产品推荐

