为什么这段JavaScript代码输出数字而非预期的嵌套数组元素?
问题根因
Array.push()方法的返回值是插入元素后数组的新长度,而非修改后的数组本身,这是你得到[2]的核心原因。- 你写的代码执行步骤拆解:
- 先执行
[].push('item','C'):创建临时空数组,插入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
相关产品推荐
相关产品推荐

