千家信息网

javascript拷贝数组的技巧

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要介绍"javascript拷贝数组的技巧",在日常操作中,相信很多人在javascript拷贝数组的技巧问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"jav
千家信息网最后更新 2025年02月01日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安全错误 数据库的锁怎样保障安全 php数据库null 普法课堂网络安全教学视频 昆山品牌网络技术费用是多少 现代网络技术实验要求 如何远程重启数据库 网络安全研发战略规划 云服务器的简称是什 服务器上有声音但是不显示 世界网络安全日的少队活动 股票模拟交易软件开发多少钱 阿里云搭建服务器稳定吗 数据库用什么电脑合适 添加什么可防止数据库程序报错 提升数据库信息处理 软件开发基本操作的序列图 一个系统pc端和移动端数据库 帕拉斯数据库安全 为什么总显示找不到服务器 智能巡检软件开发价位 闵行区管理软件开发质量保证 中国人寿保险公司数据库 华三网络安全实训报告 软件开发 混合模型 雄县租房软件开发 计算机网络技术内容 scum怎么不连服务器组队 java软件开发的发展前景怎样 网络安全专业什么时候能选 齐鲁工业大学网络安全分数线 6月有什么网络安全比赛
0