You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 17:54:05