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

解决JavaScript数组添加值时仅保留最后一个元素的问题

问题原因

你遇到的问题核心是每次循环都覆盖了dataObj.regions的值:在forEach里,你执行dataObj.regions = [新拼接的字符串],这会让regions每次都变成只包含当前元素的新数组,循环结束后自然只剩最后一个元素。

修复方案

有两种简洁的解决方式:

方式一:初始化空数组,用push添加元素

先把dataObj.regions初始化为空数组,然后在循环里逐个添加处理后的字符串:

var regionsData = JSON.parse(element[0]["regions"]);
// 先初始化空数组
dataObj.regions = [];
regionsData.forEach((value) => {
  const regionKey = Object.keys(value)[0];
  const regionInfo = value[regionKey];
  // 用push把元素加入数组,而不是覆盖整个数组
  dataObj.regions.push(
    `${regionKey} ${regionInfo.Date} ${regionInfo.Time} ${regionInfo.Timezone}`
  );
});

方式二:用map直接生成目标数组(更简洁)

map方法可以直接遍历数组并返回处理后的新数组,不需要手动初始化和push:

var regionsData = JSON.parse(element[0]["regions"]);
dataObj.regions = regionsData.map((value) => {
  const regionKey = Object.keys(value)[0];
  const regionInfo = value[regionKey];
  return `${regionKey} ${regionInfo.Date} ${regionInfo.Time} ${regionInfo.Timezone}`;
});
补充说明

注意在dataObj初始化时,你原本给regions赋值的是原始字符串element[0]["regions"],上面的代码会把这个值替换成处理后的数组,符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:07:02