设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 数据 创业者 手机
当前位置: 首页 > 运营中心 > 建站资源 > 优化 > 正文

14 个拷贝数组的 JS 技巧(2)

发布时间:2019-11-13 16:33 所属栏目:21 来源:佚名
导读:技巧 7 - 使用解构 constnumbers=[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

技巧 7 - 使用解构

  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] 

技巧 8 - 使用 Array.concat 方法

  1. const numbers = [1, 2, 3, 4, 5]; 
  2.  
  3. const copy = numbers.concat(); 
  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] 

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

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

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

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

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

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

技巧 12 - 使用 `for` 循环

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

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

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

  1. const numbers = [1, 2, 3, 4, 5]; 
  2.  
  3. const copy = numbers.reduce((acc, x) => { acc.push(x); return acc; }, []); 
  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] 

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

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

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

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

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

总结

(编辑:ASP站长网)

网友评论
推荐文章
    热点阅读