设为首页 - 加入收藏 应用计算网_滁州站长网 (http://www.0550zz.com)- 国内知名站长资讯网站,提供最新最全的站长资讯,创业经验,网站建设等!
热搜: 2015 技术 系统 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

14 个拷贝数组的 JS 技巧

发布时间:2019-11-13 19:42 所属栏目:[优化] 来源:佚名
导读:副标题#e# 【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》 数组拷贝经常被误解,但这并不是因为拷贝过程本身,而是因为缺乏对 JS 如何处理数组及其元素的理解。JS 中的数组是可变的,这说明在创建数组之后还可以修改数组的
【线上直播】11月21日晚8点贝壳技术总监侯圣文《数据安全之数据库安全黄金法则》

数组拷贝经常被误解,但这并不是因为拷贝过程本身,而是因为缺乏对 JS 如何处理数组及其元素的理解。JS 中的数组是可变的,这说明在创建数组之后还可以修改数组的内容。

14 个拷贝数组的 JS 技巧

这意味着要拷贝一个数组,咱们不能简单地将旧数组分配给一个新变量,它也是一个数组。如果这样做,它们将共享相同的引用,并且在更改一个变量之后,另一个变量也将受到更改的影响。这就是我们需要克隆这个数组的原因。

我自己是一名从事了多年开发的web前端老程序员,目前辞职在做自己的web前端私人定制课程,今年年初我花了一个月整理了一份最适合2019年学习的web前端学习干货,各种框架都有整理,送给每一位前端小伙伴,想要获取的可以关注我的头条号并在后台私信我:前端,即可免费获取。

接着来看看一些关于拷贝何克隆数组的有趣方法和技巧。

技巧 1 - 使用`Array.slice`方法

  1. const?numbers?=?[1,?2,?3,?4,?5]?
  2. ?
  3. const?copy?=?numbers.slice()?
  4. copy.push(6)?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy)?
  7. console.log(numbers)?
  8. ?
  9. //?输出?
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

技巧 2 - 使用`Array.map`方法

  1. const?numbers?=?[1,?2,?3,?4,?5]?
  2. ?
  3. const?copy?=?numbers.map(?num?=>?num?)?
  4. copy.push(6)?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy);?
  7. console.log(numbers);?
  8. ?
  9. //?输出?
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

技巧 3 - 使用`Array.from `方法

  1. const?numbers?=?[1,?2,?3,?4,?5];?
  2. ?
  3. const?copy?=?Array.from(new?Set(numbers));?
  4. copy.push(6);?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy);?
  7. console.log(numbers);?
  8. ?
  9. //?输出?
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

技巧 4 - 使用展开操作符

  1. const?numbers?=?[1,?2,?3,?4,?5];?
  2. ?
  3. const?copy?=?[...numbers];?
  4. copy.push(6);?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy);?
  7. console.log(numbers);?
  8. ?
  9. //?输出??
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

技巧 5 - 使用 `Array.of` 方法和展开操作符

  1. const?numbers?=?[1,?2,?3,?4,?5];?
  2. ?
  3. const?copy?=?Array.of(...numbers);?
  4. copy.push(6);?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy);?
  7. console.log(numbers);?
  8. ?
  9. //?输出??
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

Array.of() 方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量或类型。Array.of() 和 Array 构造函数之间的区别在于处理整数参数:Array.of(7) 创建一个具有单个元素 7 的数组,而 Array(7) 创建一个长度为7的空数组(注意:这是指一个有7个空位(empty)的数组,而不是由7个undefined组成的数组)。

  1. Array.of(7);?//?[7]??
  2. Array.of(1,?2,?3);?//?[1,?2,?3]?
  3. ?
  4. Array(7);?//?[?,?,?,?,?,?,?]?
  5. Array(1,?2,?3);?//?[1,?2,?3]?

技巧 6 - 使用 Array 构造函数和展开操作符

  1. const?numbers?=?[1,?2,?3,?4,?5];?
  2. ?
  3. const?copy?=?new?Array(...numbers);?
  4. copy.push(6);?//?添加新项以证明不会修改原始数组?
  5. ?
  6. console.log(copy);?
  7. console.log(numbers);?
  8. ?
  9. //?输出??
  10. //?[1,?2,?3,?4,?5,?6]?
  11. //?[1,?2,?3,?4,?5]?

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章