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

为什么这段JavaScript代码输出数字而非预期的嵌套数组元素?

问题根因

  • Array.push() 方法的返回值是插入元素后数组的新长度,而非修改后的数组本身,这是你得到[2]的核心原因。
  • 你写的代码执行步骤拆解:
    1. 先执行[].push('item','C'):创建临时空数组,插入2个元素后返回长度值2
    2. 再执行[].concat(2):将数值2合并到空数组中,最终得到结果[2]

正确实现写法

如果你要得到[['item','C']]的嵌套结构,可以用以下几种写法:

写法1:直接使用数组字面量(最简洁)

function arrayOfArrays() {
  return [['item','C']]
}

写法2:保留concat逻辑的写法

function arrayOfArrays() {
  return [].concat([['item','C']])
}

写法3:如果你确实需要用push操作元素

function arrayOfArrays() {
  // 先定义内层数组,执行push操作
  const innerArr = []
  innerArr.push('item', 'C')
  // 把内层数组包成外层数组的元素再返回
  return [innerArr]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:45:06