javascript 三种数组复制方法的性能对比

yizhihongxing

首先,我们需要了解 Javascript 中有哪些常见的数组复制方法以及它们的性能对比。常见的数组复制方法包括:

  1. 使用 slice() 方法复制数组
  2. 使用展开运算符 ... 进行复制
  3. 使用 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技术站

(1)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • js表单序列化判断空值的实例

    下面是关于”js表单序列化判断空值的实例”的详细攻略,包含以下几个部分: 什么是表单序列化 如何对表单进行序列化 如何判断表单中的值是否为空 实例说明 什么是表单序列化? 表单序列化是将表单元素的值和状态通过URL编码的方式串联起来,转换为一种字符串形式,可以用于ajax提交表单数据方便传输。 如何对表单进行序列化? 我们可以使用jquery中的serial…

    JavaScript 2023年6月10日
    00
  • JS闭包与延迟求值用法示例

    JS闭包和延迟求值是JS中比较重要的概念,也是面试中常被问到的问题。下面我将给出JS闭包与延迟求值的完整攻略,并针对两个具体的示例进行说明。 一、JS闭包 1.1 什么是闭包 在JS中,闭包就是能够读取其他函数内部变量的函数。简单来说,闭包就是“内部函数记住并访问其外部作用域的能力”。 1.2 闭包的形成与作用 闭包的形成有两个条件:内部函数必须在外部函数内…

    JavaScript 2023年6月10日
    00
  • JavaScript设计模式之模板方法模式原理与用法示例

    JavaScript设计模式之模板方法模式 简介 模板方法模式(Template Method Design Pattern)又称为模板模式,是一种行为型设计模式。在该模式中,定义一个操作中的算法骨架,而将一些步骤延迟到子类中实现。也就是说,在父类中定义好算法的骨架,具体实现留给子类去实现,这样就可以保证算法的整体流程在父类中控制,所有子类遵循相同的规则去按…

    JavaScript 2023年6月10日
    00
  • js实现拖动缓动效果

    实现拖动缓动效果,需要用到JavaScript中的定时器和数学运算等技术。下面我来详细讲解一下整个过程。 第一步:获取元素位置 首先,我们需要获取需要拖动的元素以及它的位置。在代码中,我们通常会使用getBoundingClientRect()方法来获取元素的绝对位置。 const dragElem = document.querySelector(‘.dr…

    JavaScript 2023年6月10日
    00
  • 常用的js方法合集

    常用的JS方法合集 本篇攻略主要讲解常用的JS方法合集,包括字符串、数组、日期、正则表达式等方面的常用方法。 字符串方法 字符串是JS中最为常见的数据类型之一,在日常开发中经常需要对字符串进行操作。下面列出一些常用的字符串方法: string.length 用于获取字符串的长度,即包含的字符数。 javascript var str = “Hello Wor…

    JavaScript 2023年5月18日
    00
  • JavaScript基础之对象

    JavaScript基础之对象 在JavaScript中,对象是一种数据类型,其中包含了一组属性和方法,每个属性都有一个值。对象可以通过字面量形式进行创建,也可以通过构造函数进行创建。 对象的创建 字面量创建对象 使用字面量可以很方便地创建一个对象,字面量由一对花括号“{}”表示,对象属性和值之间使用冒号分隔,属性之间使用逗号分隔。 let person =…

    JavaScript 2023年5月18日
    00
  • 防止重复发送 Ajax 请求

    防止重复发送 Ajax 请求是一个常见的开发任务,因为在页面交互过程中,用户可能会频繁地发起相同的请求,如果每次都向服务器发起请求,不仅会增加服务器的压力,也会降低用户体验。下面是防止重复发送 Ajax 请求的完整攻略: 1. 使用防抖技术 防抖技术是一种延迟执行函数的策略,即在指定时间内如果触发多次事件,只会执行一次。在 Ajax 请求中,我们可以使用防抖…

    JavaScript 2023年6月11日
    00
  • js获取单选按钮的数据

    获取单选按钮的数据在实际应用中非常常见,以下是 js 获取单选按钮数据的完整攻略: 1. 获取单选按钮的选中状态 要获取单选按钮的数据,首先需要知道单选按钮的选中状态。单选按钮的选中状态可以通过其 checked 属性来获取。checked 属性是一个布尔值,表示单选按钮是否被选中。若该属性为 true,则表示单选按钮被选中。 下面是获取单选按钮的选中状态的…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部