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

JS从字符串生成对象数组:现有代码仅返回最后一项求修正

解决字符串转对象数组的问题

问题原因

你当前的代码只初始化了单个对象,在forEach循环里反复修改这个对象的属性值,最终返回的自然是最后一次修改后的结果,而非对象数组。

修正方案

方法1:使用map函数(简洁首选)

map函数可以直接遍历分割后的条目,把每个条目转换成对象并组成数组:

let datas = "team1 1, team2 2, team3 3";

const teamArray = datas.split(/\s*,\s*/).map(item => {
  // 分割团队名称和数字,\s+匹配任意数量空格
  const [name, countStr] = item.split(/\s+/);
  // 返回新对象,count转成整数时指定进制更严谨
  return { name, count: parseInt(countStr, 10) };
});

console.log(teamArray);

方法2:使用forEach手动构建数组

如果更习惯用forEach,需要先初始化空数组,每次循环创建新对象并推入数组:

let datas = "team1 1, team2 2, team3 3";

const teamArray = [];
// 先按逗号分割成单个团队条目,处理逗号前后的空格
datas.split(/\s*,\s*/).forEach(item => {
  const parts = item.split(/\s+/);
  // 每次循环创建新对象,避免覆盖之前的对象
  teamArray.push({ name: parts[0], count: parseInt(parts[1], 10) });
});

console.log(teamArray);

最终输出

两种方法都会生成你期望的结果:

[{name: "team1", count: 1},
{name: "team2", count: 2},
{name: "team3", count: 3}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:42:14