JS常用的几种数组遍历方式以及性能分析对比实例详解

JS常用的几种数组遍历方式以及性能分析对比实例详解

在 JavaScript 中,数组遍历是开发者们经常需要用到的功能之一。在本文中,我们将介绍 JS 常用的几种数组遍历方式并进行一些性能分析对比。

常用的几种数组遍历方式

在 JavaScript 中,常用的几种数组遍历方式如下:

1. for 循环

for 循环是最基础的数组遍历方式,通过对数组的下标进行循环遍历,可以访问数组中的每一个元素。例如:

const arr = [1, 2, 3];
for (let i = 0; i < arr.length; i++) {
  console.log(arr[i]);
}

2. forEach 循环

forEach 是 ES5 提供的数组遍历方法,它接收一个回调函数作为参数,对于数组中的每一个元素,都会执行一次该回调函数。例如:

const arr = [1, 2, 3];
arr.forEach((item) => {
  console.log(item);
});

3. for...of 循环

for...of 循环是 ES6 新增的语法,它可以用来遍历可迭代对象,例如数组、字符串、Map 等。与 for 循环不同的是,for...of 循环遍历的是数组元素的值,而不是下标。例如:

const arr = [1, 2, 3];
for (const item of arr) {
  console.log(item);
}

4. map 方法

map 方法是数组原型上的一个方法,它会对数组中的每一个元素执行一个回调函数,并返回一个新的数组。例如:

const arr = [1, 2, 3];
const newArr = arr.map((item) => {
  return item * 2;
});
console.log(newArr);

5. filter 方法

filter 方法也是数组原型上的一个方法,它会对数组中的每一个元素执行一个回调函数,并返回一个新的数组,其中包含所有回调函数返回 true 的元素。例如:

const arr = [1, 2, 3];
const evenArr = arr.filter((item) => {
  return item % 2 === 0;
});
console.log(evenArr);

性能分析对比实例

我们通过对常用的几种数组遍历方式进行性能分析,来对比它们的效率。

首先,我们定义一个包含 10000 个元素的数组:

const arr = new Array(10000).fill(1);

接下来,我们使用 console.time()、console.timeEnd() 来测量各个遍历方式的执行时间。

1. for 循环

console.time('for循环');
for (let i = 0; i < arr.length; i++) {
  arr[i]++;
}
console.timeEnd('for循环');

输出结果:

for循环: 0.023193359375ms

2. forEach 循环

console.time('forEach循环');
arr.forEach((item, index) => {
  arr[index]++;
});
console.timeEnd('forEach循环');

输出结果:

forEach循环: 0.045166015625ms

3. for...of 循环

console.time('for...of循环');
for (const item of arr) {
  item++;
}
console.timeEnd('for...of循环');

输出结果:

for...of循环: 0.4560546875ms

4. map 方法

console.time('map方法');
const newArr = arr.map((item) => {
  return item + 1;
});
console.timeEnd('map方法');

输出结果:

map方法: 0.06689453125ms

5. filter 方法

console.time('filter方法');
const evenArr = arr.filter((item) => {
  return item % 2 === 0;
});
console.timeEnd('filter方法');

输出结果:

filter方法: 0.22998046875ms

综上所述,for 循环的性能相对较优。在实际应用中,可以根据实际情况选择最适合的遍历方式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS常用的几种数组遍历方式以及性能分析对比实例详解 - Python技术站

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

相关文章

  • JavaScript 截取字符串代码实例

    下面是“JavaScript 截取字符串代码实例”的完整攻略。 什么是字符串截取? 在编程中,字符串截取是指在一个字符串中截取一段指定长度的字符或某一范围内的字符。在 JavaScript 中,通过截取字符串可以获取到需要使用的部分内容,这在字符串处理中是很常见的操作。 JavaScript 截取字符串的方法 JavaScript 提供了几种截取字符串的方法…

    JavaScript 2023年5月28日
    00
  • 关于TypeScript开发的6六个实用小技巧分享

    下面我将为您详细讲解“关于TypeScript开发的6六个实用小技巧分享”的完整攻略。 1. 引入类型声明文件 在使用第三方库时,通常需要使用类型声明文件(.d.ts)来规范代码。在 TypeScript 中,我们通过 /// <reference types=”…” /> 指令来引入类型声明文件。 例如,引入 jQuery 的类型声明文件:…

    JavaScript 2023年5月19日
    00
  • 正则表达式详述 三

    正则表达式详述 三 – 完整攻略 正则表达式的元素 正则表达式(Regular Expression)是由原子和运算符组成的表达式,它可以用来描述字符串的规律和特征。在正则表达式中,原子是最基本的单位,它可以是任何单个字符、一组字符或者特殊的字符。 下面介绍几种常用的正则表达式元素: 字符 在正则表达式中,字符指的是每一个单一的字符,包括字母、数字、标点符号…

    JavaScript 2023年6月10日
    00
  • JavaScript创建对象的几种方式及关于this指向问题

    当我们使用 JavaScript 开发应用时, 经常要通过创建对象来实现某些功能。JavaScript 中有多种方式可以创建对象,下面是几种常见的方法。 1. 字面量方式 最常见的创建对象的方式就是使用字面量方式,我们使用对象字面量来创建一个对象,并将其赋值给一个变量或常量。 const obj = { name: ‘Tom’, age: 20 } 对象字面…

    JavaScript 2023年5月27日
    00
  • JavaScript在for循环中绑定事件解决事件参数不同的情况

    JavaScript 在 for 循环中绑定事件时,通常会遇到事件参数不同的情况,这种情况下,如果不加以处理,则会导致事件回调出错或者引起内存泄漏等问题。解决该问题的方法是通过使用闭包和立即执行函数表达式,来给事件参数绑定上恰当的值。下面是具体的攻略: 1. 通过立即执行函数表达式给事件参数绑定上值 通过立即执行函数表达式可以在每次迭代时创建一个新的作用域,…

    JavaScript 2023年6月10日
    00
  • javascript Blob对象实现文件下载

    JavaScript Blob对象实现文件下载 在Web开发中,经常需要实现文件的上传和下载功能。这里介绍一种实现文件下载的方法:使用JavaScript的Blob对象。 Blob对象 Blob(Binary Large Object)对象表示一个不可变的、原始数据的类似文件对象。它允许读取文件内容、以及将内容存储到文件中。在实现文件下载的过程中,我们将要使…

    JavaScript 2023年5月27日
    00
  • token 机制和实现方式

    Token机制是一种通过在用户请求中加入令牌(token)来验证用户身份的方式。相比于传统的基于cookie或session的身份验证方式,Token机制能够避免跨站请求伪造(CSRF)和跨站脚本攻击(XSS)等安全问题。 以下是Token机制的实现方式: 用户登录时,需要向服务器发送登录请求(例如通过POST方式提交用户名和密码)。服务器根据用户输入的用户…

    JavaScript 2023年6月11日
    00
  • javascript的console.log()用法小结

    当我们在进行javascript编程时,调试代码是非常重要的一步。而在调试过程中,console.log()是我们经常用到的一个方法,它可以在浏览器的控制台中输出信息,帮助我们快速排查代码的问题。 下面是关于javascript的console.log()用法的完整攻略: 1. console.log()方法的语法 console.log()方法是javas…

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