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

JavaScript中如何根据数组生成指定结构的对象数组?

问题描述

给定数组:

arr1 = ['d1','d2','d3'];

希望生成如下格式的对象数组:

[{n1 : 'd1', n2:'d1', n3 : 'd1'},
 {n1 : 'd2', n2:'d2', n3 : 'd2'},
 {n1 : 'd3', n2:'d3', n3 : 'd3'}]

尝试了以下代码,但输出不符合预期:

arr1 = ['d1', 'd2', 'd3'];

mapV =
  arr1.map((item, index, arr) => [{
    n1: 'd1',
    n2: 'd1',
    n3: 'd3'
  }]);

console.log(mapV);

实际输出:

[   [ { n1: 'd1', n2: 'd1', n3: 'd3' } ],   [ { n1: 'd1', n2: 'd1', n3: 'd3' } ],   [ { n1: 'd1', n2: 'd1', n3: 'd3' } ] ]
修正方案

代码存在两个问题:

  • map回调返回的是数组包裹的对象([{...}]),导致最终结果变成二维数组,而非目标的一维对象数组
  • 对象属性值写死为固定字符串,没有复用当前遍历的item值

修正后的代码:

arr1 = ['d1', 'd2', 'd3'];

mapV = arr1.map(item => ({
  n1: item,
  n2: item,
  n3: item
}));

console.log(mapV);

说明:

  1. 移除对象外层的数组括号,直接返回单个对象,map会自动将每个对象收集为一维数组元素
  2. 将n1、n2、n3的属性值替换为当前遍历的item,确保每个对象的属性值对应原数组的对应元素

运行上述代码即可得到预期输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 09:13:30