技巧 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
总结
(编辑:ASP站长网)
|