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

如何使用JavaScript将带数组索引的扁平化对象属性解析为嵌套数组

JavaScript扁平化嵌套键转结构化对象实现方案

实现思路

  • 拆分原对象的属性为普通属性和嵌套数组属性两类单独处理
  • 通过正则匹配嵌套键名中的数组下标和子字段名,自动组装数组结构
  • 兼容多索引的item_variants场景,不止支持0下标的单条数据

实现代码

function transformData(rawData) {
  const result = {}
  const variants = []
  // 匹配嵌套键的正则:捕获数组索引和字段名
  const variantKeyRegex = /^item_variants\[(\d+)]\['(\w+)']$/

  for (const [key, value] of Object.entries(rawData)) {
    const matchRes = key.match(variantKeyRegex)
    if (matchRes) {
      // 处理嵌套数组属性
      const index = Number(matchRes[1])
      const field = matchRes[2]
      // 对应索引位置无对象则初始化
      if (!variants[index]) variants[index] = {}
      variants[index][field] = value
    } else {
      // 普通属性直接赋值
      result[key] = value
    }
  }

  // 挂载组装好的数组到结果对象
  result.item_variants = variants
  return result
}

// 测试用例
const raw = {
  name: '123',
  description: 'Dev',
  "item_variants[0]['name']": '23434',
  "item_variants[0]['quantity']": '12334',
  "item_variants[0]['unit_price']": '123123',
}
console.log(transformData(raw))

输出结果

运行代码后输出的结构完全符合要求:

{
  name: '123',
  description: 'Dev',
  item_variants: [
    {
      name: '23434',
      quantity: '12334',
      unit_price: '123123'
    }
  ]
}

内容的提问来源于stack exchange,提问作者Wai Phyo Naing

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 14:45:04