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

如何用JavaScript为JSON数组的子数组批量分配指定键名?

问题:将嵌套数组的JSON转换为键值对对象数组

现有如下结构的JSON数组:

{
 "dummyValues": [
    [
        0.57,
        0.52,
        0.51,
        0.50 // ... 更多元素
    ],
    [
        0.56,
        0.52,
        0.50,
        0.49,
        0.46 // ... 更多元素
    ]
 ]
}

需要按顺序为每个子数组的元素分配以下键名集合:

const keys = [
    "A",
    "B",
    "C",
    "D",
    "E" // ... 更多键名
];

期望转换后的结果:

{
  "dummyValues": [
    {
        "A": 0.57,
        "B": 0.52,
        "C": 0.51,
        "D": 0.50 // ... 更多键值对
    },
    {
        "A": 0.56,
        "B": 0.52,
        "C": 0.50,
        "D": 0.49,
        "E": 0.46 // ... 更多键值对
    }
 ]
}

要求仅使用JavaScript实现该转换。


实现方案

方法1:map + Object.fromEntries(简洁写法)

利用Object.fromEntries将键值对数组直接转为对象,语法简洁高效:

// 原始数据
const originalData = {
 "dummyValues": [
    [0.57, 0.52, 0.51, 0.50],
    [0.56, 0.52, 0.50, 0.49, 0.46]
 ]
};

const keys = ["A", "B", "C", "D", "E"];

// 转换逻辑
const transformedData = {
  dummyValues: originalData.dummyValues.map(arr => 
    Object.fromEntries(arr.map((value, index) => [keys[index], value]))
  )
};

console.log(transformedData);

方法2:map + reduce(兼容旧环境)

如果需要兼容不支持Object.fromEntries的旧浏览器/环境,用reduce逐步构建对象:

const transformedData = {
  dummyValues: originalData.dummyValues.map(arr => 
    arr.reduce((resultObj, value, index) => {
      resultObj[keys[index]] = value;
      return resultObj;
    }, {})
  )
};

方法3:map + forEach(直观写法)

用forEach遍历子数组元素,逐个给对象赋值,逻辑直观易懂:

const transformedData = {
  dummyValues: originalData.dummyValues.map(arr => {
    const resultObj = {};
    arr.forEach((value, index) => {
      resultObj[keys[index]] = value;
    });
    return resultObj;
  })
};

注意事项

  • 若子数组元素数量多于keys长度,超出的元素会被忽略;
  • 若keys数量多于子数组元素,多余的键不会出现在结果对象中(除非子数组对应位置为undefined)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:06:23