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

JavaScript向二维数组各子数组push元素未达预期的问题

问题原因

你的代码存在两个核心问题:

  • 对Array.map的用法理解错误:map的设计作用是遍历原数组,根据回调函数的返回值生成全新数组,回调必须显式return要存入新数组的元素。你写的回调里只执行了push操作、没有任何返回值,最终得到的ticketi会是全为undefined的无效数组,不可能得到预期结果。
  • push属于直接修改原数组的变异方法,你运行现有代码时,原数组firstClassPrices其实已经被改动了,但如果你把返回的ticketi当作目标结果使用,必然不符合预期。而且遍历过程中直接修改原数组容易埋下不可预期的副作用bug,常规开发中不推荐这种写法。
正确实现方案

根据实际需求二选一即可:

方案1:直接修改原数组(不需要生成新数组)

这种场景没必要用map,用forEach遍历即可:

firstClassPrices.forEach((price) => {
  price.push("1");
});

执行完成后,原firstClassPrices就是你期望的结构。

方案2:不改动原数组,生成独立的新结果数组(map的标准用法)

如果要保留原数组不变,推荐用这种无副作用的写法:

const ticketi = firstClassPrices.map((price) => {
  return [...price, "1"]; // 用扩展运算符拷贝原子数组,追加"1"后返回全新子数组
});

执行后原数组保持不变,变量ticketi存储的就是你要的、追加完元素的目标数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:24:15