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

如何在JavaScript循环中将变量转换为指定结构的对象?

解决通过for循环生成目标对象的问题

我希望通过for循环内部的变量创建一个目标对象。示例代码如下:

var arr = [1, 3, 4, 5]; 
var output = {}; 
for(var i = 0; i < arr.length; i ++) { 
  var message = "Array number : " + arr[i]; 
  //var output = {number : message}; //obj 
  console.log('Output', output); 
}

但我不确定当前逻辑是否正确,我期望的输出为以下两种结构之一:
结构1:

Output: { 
  number:[ 
    0: {"Array number: 1"}, 
    1: {"Array number: 3"}, 
    2: {"Array number: 4"}, 
    3: {"Array number: 5"} 
  ] 
}

结构2:

Output: { 
  number:{ 
    "Array number: 1", 
    "Array number: 3", 
    "Array number: 4", 
    "Array number: 5" 
  } 
}

先来说说你当前代码的问题:你初始化了空的output对象,但循环里只是生成了message变量,根本没把它添加到output里;注释掉的那行更是每次循环都重新创建一个全新的output,完全无法累积数据。下面分别给出两种目标结构的正确实现:


实现第一种结构(number为数组,元素是包含对应文本的对象)

首先要提前把output.number初始化为空数组,然后在循环里把每个生成的对象推送到数组中:

var arr = [1, 3, 4, 5]; 
var output = { number: [] }; // 先初始化number为数组
for(var i = 0; i < arr.length; i ++) { 
  var message = "Array number : " + arr[i]; 
  // 把生成的对象push到number数组里
  output.number.push({ [message]: message });
}
console.log('Output', output);

运行后输出的结构和你期望的一致(数组的索引0、1、2、3是默认存在的,不需要手动指定):

Output: {
  number: [
    {"Array number : 1"},
    {"Array number : 3"},
    {"Array number : 4"},
    {"Array number : 5"}
  ]
}

实现第二种结构(number为对象)

这里要注意一个JavaScript语法限制:对象必须是键值对的形式,你示例里直接写逗号分隔字符串的写法是不合法的。我给你两种符合语法的实现方式:

方式1:以文本作为对象的键(注意重复文本会被覆盖)

var arr = [1, 3, 4, 5]; 
var output = { number: {} }; 
for(var i = 0; i < arr.length; i ++) { 
  var message = "Array number : " + arr[i]; 
  // 把文本同时作为键和值
  output.number[message] = message;
}
console.log('Output', output);

输出结果:

Output: {
  number: {
    "Array number : 1": "Array number : 1",
    "Array number : 3": "Array number : 3",
    "Array number : 4": "Array number : 4",
    "Array number : 5": "Array number : 5"
  }
}

方式2:以索引作为键,文本作为值

var arr = [1, 3, 4, 5]; 
var output = { number: {} }; 
for(var i = 0; i < arr.length; i ++) { 
  var message = "Array number : " + arr[i]; 
  // 用循环索引作为键
  output.number[i] = message;
}
console.log('Output', output);

输出结果:

Output: {
  number: {
    "0": "Array number : 1",
    "1": "Array number : 3",
    "2": "Array number : 4",
    "3": "Array number : 5"
  }
}

这样就能完美实现你想要的两种结构啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:54:52