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

循环中向以map为索引的数组添加元素时如何保留原有数据?

解决数组赋值覆盖原有数据的问题

你的问题出在每次循环都直接用新数组替换了mapArray[map]的原有内容,要实现追加新数据同时保留旧数据,只需要把新数组的元素合并到已有数组中即可,有两种常用写法:

写法1:扩展运算符合并

let placeHolder = facArray[key].filter(i => i.M == map).map(i => i.W)
mapArray[map] = [...(mapArray[map] || []), ...placeHolder]

解释:mapArray[map] || []会先获取已有数组,如果mapArray[map]还未初始化(值为undefined),就用空数组代替,再通过扩展运算符把原有元素和新的placeHolder元素合并成新数组,赋值给mapArray[map]。

写法2:push方法追加

let placeHolder = facArray[key].filter(i => i.M == map).map(i => i.W)
// 先初始化数组(如果不存在的话)
if (!mapArray[map]) {
  mapArray[map] = []
}
// 把新数据批量追加到数组末尾
mapArray[map].push(...placeHolder)

解释:先判断mapArray[map]是否存在,不存在就创建一个空数组,再用push(...placeHolder)把新数组的所有元素追加到已有数组后面,这种写法不会创建新数组,直接修改原数组,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:25:24