温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

javascript拷贝数组的技巧

发布时间:2021-09-13 14:33:06 来源:亿速云 阅读:135 作者:chen 栏目:web开发

这篇文章主要介绍“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拷贝数组的技巧

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

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI