首先,我们需要了解 Javascript 中有哪些常见的数组复制方法以及它们的性能对比。常见的数组复制方法包括:
- 使用
slice()
方法复制数组 - 使用展开运算符
...
进行复制 - 使用
Array.from()
方法进行复制
接下来,我们将分别介绍这三种方法的具体实现及性能测试。
使用 slice()
方法复制数组
slice()
方法可以从已有的数组中返回选定的元素。如果未传入参数,则返回数组的副本。因此,我们可以使用 slice()
方法来复制整个数组。下面是一个使用 slice()
方法复制数组的示例:
const arr1 = [1, 2, 3, 4];
const arr2 = arr1.slice();
在这个示例中,我们先定义了一个数组 arr1
,然后使用 slice()
方法复制了它,将结果存储在 arr2
中。
为了测试 slice()
方法的性能,我们可以使用以下代码:
const arr = new Array(10000).fill(0);
console.time('slice()');
const copiedArr = arr.slice();
console.timeEnd('slice()');
在上面的代码中,我们使用 time()
和 timeEnd()
方法分别记录了使用 slice()
方法进行数组复制所需的时间。
使用展开运算符 ...
进行复制
JavaScript 中的展开运算符 ...
可以在函数调用或数组字面量时将数组或可迭代对象展开为多个参数。因此,我们可以使用展开运算符来复制数组,如下所示:
const arr1 = [1, 2, 3, 4];
const arr2 = [...arr1];
在这个示例中,我们先定义了一个数组 arr1
,然后使用展开运算符将它复制到 arr2
中。
为了测试使用展开运算符进行数组复制的性能,我们可以使用以下代码:
const arr = new Array(10000).fill(0);
console.time('spread operator');
const copiedArr = [...arr];
console.timeEnd('spread operator');
在上面的代码中,我们使用 time()
和 timeEnd()
方法分别记录了使用展开运算符进行数组复制所需的时间。
使用 Array.from()
方法进行复制
Array.from()
方法可以从类数组对象或可迭代对象中创建一个新数组实例。因此,我们可以使用 Array.from()
方法来复制数组,如下所示:
const arr1 = [1, 2, 3, 4];
const arr2 = Array.from(arr1);
在这个示例中,我们先定义了一个数组 arr1
,然后使用 Array.from()
方法将它复制到 arr2
中。
为了测试使用 Array.from()
方法进行数组复制的性能,我们可以使用以下代码:
const arr = new Array(10000).fill(0);
console.time('Array.from()');
const copiedArr = Array.from(arr);
console.timeEnd('Array.from()');
在上面的代码中,我们使用 time()
和 timeEnd()
方法分别记录了使用 Array.from()
方法进行数组复制所需的时间。
性能对比
经过测试,使用 slice()
方法进行数组复制的性能最好,Array.from()
方法的性能次之,使用展开运算符 ...
进行数组复制的性能最差。这是因为 slice()
方法和 Array.from()
方法内部都是使用了相同的算法进行数组复制,比使用展开运算符更快。
完整代码示例:
const arr = new Array(10000).fill(0);
console.time('slice()');
const copiedArr1 = arr.slice();
console.timeEnd('slice()');
console.time('spread operator');
const copiedArr2 = [...arr];
console.timeEnd('spread operator');
console.time('Array.from()');
const copiedArr3 = Array.from(arr);
console.timeEnd('Array.from()');
输出结果:
slice(): 0.070068359375ms
spread operator: 0.18701171875ms
Array.from(): 0.220947265625ms
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript 三种数组复制方法的性能对比 - Python技术站