如何快速将二维数组格式的JSON数据转换为键值对对象数组?
快速将二维数组转换为键值对对象数组
这里有个原生JavaScript就能实现的高效方案,完全不用依赖第三方库,几步就能搞定:
- 先把你的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);
- 提取表头(数组第一行的字段名),再遍历后续行数据,把每个字段和对应值映射成对象:
// 解构拆分表头和数据行 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




