在刷力扣时,遇到如下问题:

res.push([…path])或者res.push(Array.from(path))得出的结果是正确的,而res.push(path)得到的结果全为空:[ [], [], [] ]

解释:

  • res.push(path) 等于把 path 的引用,追加到了数组里面。所以如果path被改变了,res里面的也会改变。
  • res.push([…path]),这里等于把 path 的内容拿出来,重新构建了一个数组。然后追加。这里重点是切断了引用关系。相同的办法有深浅拷贝、concat、JSON.parse(JSON.stringify)

补充:

ES6之所以把这两个关键字设成一致的写法,是因为它们本质是一样,都是解构赋值

扩展运算符(spread)用三个点号表示,功能是把数组或类数组对象展开成一系列用逗号隔开的值。即取出参数对象的所有可遍历属性,然后拷贝到当前对象之中。

let arr = ['b', 'c'];
['a', ...arr, 'd']
// ['a', 'b', 'c', 'd']

剩余运算符(rest)也是三个点号,不过其功能与扩展运算符恰好相反,把逗号隔开的值序列组合成一个数组。

//当函数参数个数不确定时,用 rest运算符
function f1(...args) {console.log(args); // [1,2,3]
}f1(1,2,3);

当三个点(…)在等号右边,或者放在实参上,是扩展运算符

当三个点(…)在等号左边,或者放在形参上,为剩余运算符

push(array)和push([...array])的区别和联系相关推荐

  1. np.array与np.ndarray的区别

    import numpy as np# numpy.array() 和 numpy.ndarray()的区别? mat1 = np.array([[1,2,3],[4,5,6]]) print(&qu ...

  2. python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...

  3. Android中adb push和adb install的使用区别

    在Android实际开发中,经常会使用adb命令,安装应用程序可以使用adb push 或者adb install.下面就来讲讲这两种安装方式的区别. adb push 能够指定安装目录.比如执行&q ...

  4. numpy中np.array()与np.asarray的区别以及.tolist

    参考numpy中np.array()与np.asarray的区别以及.tolist - 云+社区 - 腾讯云 array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是 ...

  5. Array.prototype.slice Array.prototype.splice 用法阐述

    目的 对于这两个数组操作接口,由于不理解, 往往被误用, 或者不知道如何使用.本文尝试给出容易理解的阐述. 数组 什么是数组? 数组是一个基本的数据结构, 是一个在内存中依照线性方式组织元素的方式, ...

  6. Js新方法array.groupby() 和array.groupbytomap()

    新的数组组提案(目前处于第三阶段),它引入了新方法 array.groupby() 和array.groupbytomap() .它们的 polyfills 文件可以在 core-js 库中找到. 接 ...

  7. Array.isArray,Array.from, Array.entries,Array.incledes的实现原理,分别手写方法

    1.Array.isArray 基本使用 const arr = ["1"]; console.log("isArray:", Array.isArray(ar ...

  8. 《python机器学习经典实例》Expected 2D array, got 1D array instead和Reshape your data either using array.问题(已解决)

    问题描述: ValueError: Expected 2D array, got 1D array instead: array=[2.  1.5]. Reshape your data either ...

  9. Array.from和Array.of的用法

    Array.from() 1.会把一个类数组或对象,转成真正的数组,但是这个类数组必须具有length属性 var list={0:"韩信",1:"李白",2: ...

  10. 【JavaScript面试】isArray() 、Array.of()、Array.from() 方法

    isArray() 定义和用法 isArray() 方法用于判断一个对象是否为数组. 如果对象是数组返回 true,否则返回 false. 语法 Array.isArray(obj) 参数 objec ...

最新文章

  1. Qt 程序在 Windows 下的发布
  2. 客户网页WIZnet无线解决方案 之 太阳能逆变器
  3. C#中如何创建文件夹
  4. Http请求报头设置(C#)
  5. 基于S2SH的电子商务网站系统性能优化
  6. 拖拽 开发 easyui php,Easyui-Builder
  7. postman发送json格式的post请求
  8. protues仿真8086常见问题
  9. 世界地图可以无限放大_国外测评 | 老蛙百微镜头的全方位解析,2倍放大倍率的优质表现!...
  10. 【大数据分析】Spark介绍
  11. 通过Socket实现群聊的思路
  12. npm init @vitejs/app的背后,仅是npm CLI的冰山一角
  13. 【系统优化】解决windows11桌面切换卡顿(非重装以及关闭特效)
  14. ios5.1.1旧版软件下载_爱思助手V7.98.15 版发布:新增IPA签名旧版本应用下载等新功能...
  15. Proxifier与burp小程序抓包
  16. Android系统SystemUI启动过程
  17. HTTP 204和304的区别
  18. 使用TF Service搭建在线服务:part-1
  19. Vue.js 技术揭秘
  20. nand flash驱动调试学习

热门文章

  1. 参考文献交叉引用的使用方法(word和wps)
  2. 万事达卡携手中国银行、北汽鹏龙发布联名信用卡
  3. java 基础知识学习2
  4. Linux---冯诺依曼体系结构和操作系统
  5. 【技术】基于angularJS的前端自动化测试工具Protractor快速入门
  6. 思岚科技定位导航技术凸显 成为服务机器人企业首选品牌
  7. HTML-6.表单学习—如何做一个注册(登录)网页
  8. MySQL大厂优化方案轻松应对高并发!真牛!
  9. 20春招机器学习、数据开发、NLP岗面经
  10. uva 12325 宝箱