千家信息网

javascript拷贝数组的技巧

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,这篇文章主要介绍"javascript拷贝数组的技巧",在日常操作中,相信很多人在javascript拷贝数组的技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"jav
千家信息网最后更新 2026年11月03日javascript拷贝数组的技巧

这篇文章主要介绍"javascript拷贝数组的技巧",在日常操作中,相信很多人在javascript拷贝数组的技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"javascript拷贝数组的技巧"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

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

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

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

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

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

技巧 4 - 使用展开操作符

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

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

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

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

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

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

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

技巧 7 - 使用解构

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

技巧 8 - 使用 Array.concat 方法

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

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

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

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

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

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

const numbers = [1, 2, 3, 4, 5];  let copy = []; numbers.forEach((value) => copy.push(value)); copy.push(6); // 添加新项以证明不会修改原始数组  console.log(copy); console.log(numbers);  // 输出 // [1, 2, 3, 4, 5, 6] // [1, 2, 3, 4, 5]

技巧 12 - 使用 `for` 循环

const numbers = [1, 2, 3, 4, 5];let copy = [];for (let i = 0; i < numbers.length; i++) {  copy.push(numbers[i]); } copy.push(6); // 添加新项以证明不会修改原始数组  console.log(copy); console.log(numbers);  // 输出 // [1, 2, 3, 4, 5, 6] // [1, 2, 3, 4, 5]

技巧 13 - 使用 `Array.reduce` 方法

这个做法是可行,但比较多余,少用

const numbers = [1, 2, 3, 4, 5];  const copy = numbers.reduce((acc, x) => { acc.push(x); return acc; }, []); copy.push(6); // 添加新项以证明不会修改原始数组  console.log(copy); console.log(numbers);  // 输出 // [1, 2, 3, 4, 5, 6] // [1, 2, 3, 4, 5]

技巧 14 - 使用古老的 `apply` 方法

const numbers = [1, 2, 3, 4, 5];

let copy = []; Array.prototype.push.apply(copy, numbers); copy.push(6); // 添加新项以证明不会修改原始数组  console.log(copy); console.log(numbers);  // 输出 // [1, 2, 3, 4, 5, 6] // [1, 2, 3, 4, 5]

代码部署后可能存在的BUG没法实时知道,事后为了解决这些BUG,花了大量的时间进行log 调试,这边顺便给大家推荐一个好用的BUG监控工具 Fundebug。

原文:https://twitter.com/protic_milos

总结

请注意,上面这些方法执行的是浅拷贝,就是数组是元素是对象的时候,咱们更改对象的值,另一个也会跟着变,就能技巧4来说,如果咱们的数组元素是对象,如下所示:

const authors = [  { name: '前端小智', age: 25 },   { name: '王大冶', age: 30 },  ]  const copy = [...authors ] copy[0].name = '被更改过的前端小智'  console.log(copy) console.log(authors)

输出

到此,关于"javascript拷贝数组的技巧"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

数组 技巧 输出 原始 方法 操作符 拷贝 学习 元素 参数 对象 函数 前端 数量 更多 跟着 小智 好用 帮助 古老 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 云南咖啡 互联网科技股 互联网科技公司排名 广东万易互联网科技有限公司惠州分公司 河南云网互联网络科技有限公司 广州紫鲸互联网科技有限公司 互联网科技资迅 深圳互联网络科技有限公司 致骋互联网科技 互联网科技缩写 亿账通互联网科技 北京禾田雨橡互联网科技 现代科技和互联网有关系吗 字节跳动和互联网科技 移动互联网科技股 互联网科技公司实习生 有人说阿里系是互联网科技企业 新氧科技和美国互联网有关系吗 互联网科技企业商标注意事项 玉溪新华互联网科技怎么选 耶加雪菲 平安科技 互联网 融势互联网科技 狮子座互联网科技培训 银川新华互联网科技职业技术培训学校图片 赶超互联网科技 微信多开 宜昌元轩互联网科技有限公司 深圳育鹏互联网科技有限公司招聘 上海京穆互联网科技有限公司 新氧科技和美国互联网有关系吗
0