JS中push数组时spread operator的作用及[Array(x)]含义解析
数组推入嵌套问题与扩展运算符作用解析
1. 什么是[Array(x)]?
这是浏览器控制台对嵌套数组的简化显示方式,x代表嵌套子数组的长度。当数组里的元素本身是另一个数组时,控制台为了避免输出内容过长,会用这种折叠形式展示,点击就能展开看到子数组的具体元素。
2. 第一种写法为什么会出现这种情况?
看你的代码:arr.push([newArr])
这里你创建了一个嵌套数组[newArr],然后把它推入arr。假设newArr = [1,2,3],那么[newArr]就是[[1,2,3]]——这个新数组的唯一元素就是原newArr。推入后arr的结构变成[ [[1,2,3]] ],此时res[0]就是那个包含newArr的外层数组,控制台会用[Array(3)]来表示这个外层数组里的子数组(长度为3),所以你必须通过res[0][0]才能拿到原newArr。
3. 扩展运算符为什么能消除嵌套?
第二种写法arr.push([...newArr])里的...newArr是扩展运算符,它的作用是把原newArr的所有元素逐个展开,直接填充到新创建的数组里。还是用newArr = [1,2,3]举例,[...newArr]等价于[1,2,3]——和原数组内容完全一致,但不是嵌套结构。推入arr后,arr的结构变成[ [1,2,3] ],所以res[0]就是这个平级的数组,控制台直接显示为(3) [1, 2, 3],不需要再嵌套访问。
简单总结:
[newArr]是创建一个包含原数组的嵌套数组[...newArr]是创建一个和原数组元素相同的平级数组
内容的提问来源于stack exchange,提问作者Jonathan Scion
相关产品推荐
相关产品推荐

