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

如何将二维数组转换为对象数组,从指定数组选取属性名?

把二维数组映射为指定属性名的对象数组

这需求在JavaScript里很好实现,我给你两种实用的写法,按需选择就行:

简洁的ES6写法(推荐)

用map()遍历每一组数据,再用reduce()把每组数据转换成键值对对象:

const propertyName = ["name", "esteira", "horse"];
const data = [["1", "2", "3"], ["3", "4", "5"], ["6", "7", "8"]];

const result = data.map(item => 
  item.reduce((acc, value, idx) => {
    acc[propertyName[idx]] = value;
    return acc;
  }, {})
);

// 输出就是你要的结果
console.log(result);

代码解释:

  • data.map(item => ...):遍历data里的每一个子数组,把每个子数组转换成目标对象。
  • item.reduce(..., {}):以空对象为初始值,逐个将子数组的元素与propertyName对应索引的属性名绑定,最终生成完整的对象。

更直白的遍历写法(适合新手理解)

如果觉得reduce有点抽象,用两层forEach也能实现,逻辑更直观:

const propertyName = ["name", "esteira", "horse"];
const data = [["1", "2", "3"], ["3", "4", "5"], ["6", "7", "8"]];

const result = [];
// 遍历每一组数据
data.forEach(group => {
  const obj = {};
  // 给当前组的每个元素绑定对应的属性名
  group.forEach((value, idx) => {
    obj[propertyName[idx]] = value;
  });
  result.push(obj);
});

console.log(result);

边界情况处理(可选)

如果你的二维数组子项长度和propertyName长度不一致,可以加个判断,避免出现无对应属性名的情况:

const result = data.map(item => 
  item.reduce((acc, value, idx) => {
    // 只处理有对应属性名的元素
    if (idx < propertyName.length) {
      acc[propertyName[idx]] = value;
    }
    return acc;
  }, {})
);

这样就能完美得到你想要的对象数组啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:49:17