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

如何将列名数组与数组的数组转换为对象数组?

解决列名数组与二维数据数组转换为对象数组的问题

正确实现代码

方法一:使用reduce构建对象

var cols_names=['name','address','phoneno'];
var arr_of_arrs=[
    ['ABC','INDIA','0989898976'],
    ['XYZ','USA','0989898998'],
    ['CDE','UK','0989898956']
];

const arr_of_obj = arr_of_arrs.map(row => {
  return cols_names.reduce((obj, colName, index) => {
    obj[colName] = row[index];
    return obj;
  }, {});
});

console.log(arr_of_obj);

方法二:使用Object.fromEntries(更简洁)

var cols_names=['name','address','phoneno'];
var arr_of_arrs=[
    ['ABC','INDIA','0989898976'],
    ['XYZ','USA','0989898998'],
    ['CDE','UK','0989898956']
];

const arr_of_obj = arr_of_arrs.map(row => 
  Object.fromEntries(cols_names.map((name, idx) => [name, row[idx]]))
);

console.log(arr_of_obj);

错误原因分析

你之前的代码中,arr_of_arrs.map((...cols_names) => ({cols_names}))存在逻辑错误:

  • ...cols_names是将map回调的三个参数(当前行数组、行索引、原二维数组)收集到名为cols_names的数组中,而非使用外部定义的列名数组
  • 最终每个对象里的cols_names字段实际是[当前行, 索引, 原数组],完全不符合预期

输出验证

两种方法都会生成你期望的对象数组:

[
  { name: 'ABC', address: 'INDIA', phoneno: '0989898976' },
  { name: 'XYZ', address: 'USA', phoneno: '0989898998' },
  { name: 'CDE', address: 'UK', phoneno: '0989898956' }
]

这两种方案都支持任意数量的列(包括你提到的400列),无需手动逐个指定列名,完全适配大规模数据场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:04:55