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

如何展开对象数组并将嵌套值转换为键值对?

问题描述

嵌套数组stats由包含键值对的对象组成:

  • 每个对象中的statName对应属性键,statValue对应属性值
  • 需要将这些键值对提取出来,合并到最外层对象中,同时移除原有的stats数组
可用的JavaScript方法

可以借助两个原生方法实现需求:

  • Object.fromEntries():将键值对列表转换为对象
  • Object.entries():返回给定对象的可枚举字符串键属性的键值对数组(本次需求核心使用fromEntries)
原始数据
[
  {
    "playerName": "Chris Kirk",
    "country": "United States",
    "countryFlag": "USA",
    "rank": 35,
    "stats": [
      {
        "statName": "Avg",
        "statValue": "70.356"
      },
      {
        "statName": "Total Strokes",
        "statValue": "5,176"
      },
      {
        "statName": "Total Adjustment",
        "statValue": "30.308"
      },
      {
        "statName": "Total Rounds",
        "statValue": "74"
      }
    ]
  },
  {
    "playerName": "Kevin Yu",
    "country": "Chinese Taipei",
    "countryFlag": "TPE",
    "rank": 36,
    "stats": [
      {
        "statName": "Avg",
        "statValue": "70.386"
      },
      {
        "statName": "Total Strokes",
        "statValue": "3,251"
      },
      {
        "statName": "Total Adjustment",
        "statValue": "57.157"
      },
      {
        "statName": "Total Rounds",
        "statValue": "47"
      }
    ]
  }
]
期望结果
[
  {
    "playerName": "Chris Kirk",
    "country": "United States",
    "countryFlag": "USA",
    "rank": 35,
    "Avg": "70.356",
    "Total Strokes": "5,176",
    "Total Adjustment":"30.308",
    "Total Rounds": "74"
  },
  {
    "playerName": "Kevin Yu",
    "country": "Chinese Taipei",
    "countryFlag": "TPE",
    "rank": 36,
    "Avg": "70.386",
    "Total Strokes": "3,251",
    "Total Adjustment": "57.157",
    "Total Rounds": "47"
  }
]
解决方案

使用Array.map()遍历球员数组,结合Object.fromEntries()将stats转换为键值对对象,再通过对象展开运算符合并属性并剔除stats:

const transformedPlayers = players.map(({ stats, ...rest }) => ({
  ...rest,
  ...Object.fromEntries(stats.map(stat => [stat.statName, stat.statValue]))
}));

逻辑说明:

  1. 用map()遍历每个球员对象
  2. 解构赋值分离stats数组和其余属性(rest)
  3. 把stats数组转换为[键, 值]格式的数组
  4. 用Object.fromEntries()将数组转为键值对对象
  5. 展开rest和转换后的对象,得到最终结构

内容的提问来源于stack exchange,提问作者Omar Morrison

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:29:59