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

yizhihongxing

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日期工具类DateUtils定义与用法示例

    JavaScript日期工具类DateUtils定义与用法示例 介绍 JavaScript中提供了Date对象进行日期相关操作,但是有些常用的日期操作并没有提供相应的方法,因此可以使用自定义的DateUtils类来扩展Date对象的方法。 定义 下面是DateUtils的定义: class DateUtils { /** * 格式化日期 * @param {…

    JavaScript 2023年5月27日
    00
  • 让浏览器崩溃的12行JS代码(DoS攻击分析及防御)

    针对您提到的这篇文章,我将详细讲解“让浏览器崩溃的12行JS代码(DoS攻击分析及防御)”的完整攻略,过程中会提供两个示例说明。 首先,这篇文章讲的是一种攻击浏览器的简单方法,利用的是 JavaScript 的恶意代码。攻击者只需要12行 JavaScript 代码即可实现攻击,即发送无限的 alert 弹窗,导致浏览器卡死甚至闪退。本文旨在通过分析原理与漏…

    JavaScript 2023年5月28日
    00
  • javascript中数组(Array)对象和字符串(String)对象的常用方法总结

    下面我就来详细讲解一下 JavaScript 中数组(Array)对象和字符串(String)对象的常用方法总结。 数组对象的常用方法总结 数组的创建和初始化 JavaScript 中可以使用多种方式创建和初始化数组。下面是几种常用的方法: // 第一种方法:使用 [] 定义数组,可以在数组内直接写入元素 let arr1 = [1, 2, 3]; // 第…

    JavaScript 2023年5月27日
    00
  • Ajax,UTF-8还是GB2312 eval 还是execScript

    下面是关于Ajax、UTF-8与GB2312、eval与execScript的详细讲解以及示例: Ajax Ajax是一种异步的Web开发技术,可以在不刷新整个页面的情况下更新部分页面的内容。Ajax采用异步通信的方式,通过浏览器与服务器之间的数据交互,在不影响用户体验的情况下异步地向服务器请求数据并将响应的数据动态地显示到页面中。Ajax涉及到的技术包括H…

    JavaScript 2023年5月19日
    00
  • es6新特性之 class 基本用法解析

    “es6新特性之 class 基本用法解析”是用于Javascript语言中的类定义机制。下面详细讲解class基本用法解析,包括类的定义、继承、静态方法、getters/setters等。 1.类定义 ES6的类定义机制为Javascript中引入了面向对象编程的思想,具有类似其他面向对象语言的类定义能力。通过这种方式,可以将代码分解为类,类似于函数定义的…

    JavaScript 2023年6月11日
    00
  • js 调用本地exe的例子(支持IE内核的浏览器)

    下面将详细讲解“JS 调用本地 EXE 的例子(支持 IE 内核的浏览器)”的完整攻略,并提供两条示例。 准备工作 在进行本地 EXE 执行前,需要进行以下准备工作: 在服务器上放置本地 EXE 程序。 使用本地服务器,将前端代码放置于本地服务器上,这样才能执行本地 EXE 程序。 使用 IE 内核的浏览器,否则无法执行本地 EXE 程序。 JS 调用本地 …

    JavaScript 2023年5月27日
    00
  • Javascript Date setFullYear() 方法

    以下是关于JavaScript Date对象的setFullYear()方法的完整攻略,包括两个示例说明。 JavaScript Date对象的setFullYear()方法 JavaScript Date对象的setFullYear()方法设置日期对象的年份部分。该方法接受一个整数,表示要设置的年份。如果该参数超出了JavaScript所能表示的范围,则自…

    JavaScript 2023年5月11日
    00
  • JS DOMReady事件的六种实现方法总结

    下面我将详细讲解“JS DOMReady事件的六种实现方法总结”的攻略。 一、什么是DOMReady事件? DOMReady事件是指在页面中DOM树加载完成后触发的事件。在此时我们可以对页面中的DOM元素进行操作。 二、JS DOMReady事件的六种实现方法 1. 利用window.onload事件 window.onload = function() {…

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