如何在JavaScript中实现类似PHP的多维数组遍历赋值功能
报错原因
JavaScript 不会像PHP一样自动为未定义的多维层级创建空对象/数组,你直接访问data1[element.produsen_id]时,如果该key尚未初始化,得到的结果是undefined,给undefined新增属性操作会直接抛出异常。
正确实现代码
完全匹配你给出的目标JSON结构的实现如下:
// 初始化符合目标结构的根对象 const result = { main_report: { value: {} } } // 遍历数据源 data_array.forEach(element => { const pId = element.produsen_id const cId = element.category_id // 第一层key不存在则先初始化为空对象 if (!result.main_report.value[pId]) { result.main_report.value[pId] = {} } // 赋值第二层属性 result.main_report.value[pId][cId] = element.data_value }) // 如需输出JSON字符串,可调用序列化方法 const jsonStr = JSON.stringify(result, null, 2)
兼容简化写法
如果你的运行环境支持ES2021+语法,可以用逻辑或赋值简写初始化逻辑:
data_array.forEach(element => { result.main_report.value[element.produsen_id] ||= {} result.main_report.value[element.produsen_id][element.category_id] = element.data_value })
内容的提问来源于stack exchange,提问作者riyan193
相关产品推荐
相关产品推荐

