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

如何从数组数据生成对象键?JavaScript代码输出异常修正求助

问题原因与修正方案

你的代码出现这个问题的核心原因是:一直在修改同一个对象的fruit属性——循环过程中你始终复用最开始创建的那个obj,每次赋值都会覆盖掉之前的fruit值,最后返回的数组里只有这一个被反复修改的对象,所以自然只显示最后一个元素啦。

下面给你两种修正方案,任选其一都能得到你想要的结果:

方式1:调整原循环逻辑

把创建对象的操作放到循环内部,每次循环都新建一个独立的对象,再把它加入结果数组:

function createIt(data) {
  const result = [];
  // 用const声明循环变量,避免全局变量污染
  for (const i of data) {
    result.push({ fruit: i });
  }
  return result;
}
var list = ["orange", "apple", "pineapple"];
console.log(createIt(list));

方式2:用数组map方法更简洁

数组的map方法天生就是用来将数组每个元素转换为新元素的,写起来更优雅简洁:

function createIt(data) {
  return data.map(item => ({ fruit: item }));
}
var list = ["orange", "apple", "pineapple"];
console.log(createIt(list));

两种方式运行后,都会输出你期望的结果:

[ { fruit: "orange" }, { fruit: "apple" }, { fruit: "pineapple" } ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:27:01