You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何快速将二维数组格式的JSON数据转换为键值对对象数组?

快速将二维数组转换为键值对对象数组

这里有个原生JavaScript就能实现的高效方案,完全不用依赖第三方库,几步就能搞定:

  1. 先把你的JSON字符串解析成实际的数组结构:
const jsonStr = "[ [\"Individual Id\",\"Individual Last Name\",\"Individual First Name\",\"Individual Middle Name\"], [\"1268933\",\"mrs\",\"jeanine\",\"marie\"], [\"1268934\",\"mr\",\"jasmine\",\"curry\"] ]";
const data = JSON.parse(jsonStr);
  1. 提取表头(数组第一行的字段名),再遍历后续行数据,把每个字段和对应值映射成对象:
// 解构拆分表头和数据行
const [headers, ...rows] = data;
// 生成目标对象数组
const result = rows.map(row => 
  headers.reduce((obj, header, index) => {
    obj[header] = row[index];
    return obj;
  }, {})
);

执行完这段代码后,result就是你想要的键值对对象数组了!

代码逻辑说明:

  • 用解构赋值[headers, ...rows]直接把数组第一行抽出来当表头,剩下的所有数据行存入rows数组,逻辑清晰又简洁。
  • rows.map()遍历每一行数据,再通过headers.reduce()逐行构建对象:把每个表头作为键,对应位置的行数据作为值,逐步填充到空对象中。

如果需要像示例里那样修改某个特定值(比如第二行的"mr"改成"miss"),只需要在映射时加个简单判断即可:

const result = rows.map(row => 
  headers.reduce((obj, header, index) => {
    let value = row[index];
    // 针对第二行的姓氏字段做替换
    if (row[0] === "1268934" && header === "Individual Last Name") {
      value = "miss";
    }
    obj[header] = value;
    return obj;
  }, {})
);

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

火山引擎 最新活动