解决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
相关产品推荐
相关产品推荐

