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日

相关文章

  • html读出文本文件内容

    当我们需要读取文本文件内容并将其显示在网页上时,我们可以使用 HTML 中的 <pre> 标签,该标签会保留文本中的空格、回车和制表符等格式。但是,为了将文件内容读取到 HTML 中,我们需要借助服务器端脚本语言如 PHP、Python 等。 以下是一个 PHP 的示例: 在 HTML 文件中添加以下代码: <div> <?ph…

    JavaScript 2023年5月27日
    00
  • 原生JavaScrpit中异步请求Ajax实现方法

    原生JavaScript中异步请求Ajax实现方法 什么是Ajax Ajax(Asynchronous JavaScript and XML)表示一种创建快速动态网页的技术,可以在不重新加载整个页面的情况下更新部分内容。通过Ajax,可以在网页中使用JavaScript实现异步数据请求和数据处理,从而提高用户体验效果。 原生JavaScript实现Ajax请…

    JavaScript 2023年6月11日
    00
  • js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    关于 js 中 top、clientTop、scrollTop、offsetTop 四个属性的区别,我们可以这样来理解: top 对于 Window 对象和 Frame 对象,top 属性返回当前窗口的最顶层的父级窗口,如果当前对象已经是最顶层窗口,该属性则返回这个对象本身。 对于 HTML 元素,如果元素的 position 属性值为 ‘static’(默…

    JavaScript 2023年6月11日
    00
  • pdf.js 使用

    pdf文件能够比较好的保留源格式,传输也比较方便,现PC端浏览器基本都可直接查看pdf文件,只是界面风格不怎么统一,但是手机端查看pdf文件就不能很好的只“预览”,往往都是自动下载到本地再查看,今天分享pdf.js,主要用于在线pdf预览,平时我使用比较多的场景就是培训手册。 我用的是1.1.159,版本比较旧,解压后文件只有3.66 MB。     使用方…

    JavaScript 2023年4月18日
    00
  • JavaScript实现简易购物车最全代码解析(ES6面向对象)

    JavaScript实现简易购物车最全代码解析(ES6面向对象)是一篇详细讲解JavaScript购物车实现的文章,提供了完整的代码和注释,可以帮助初学者更好地理解面向对象的编程思想和JavaScript语言的运用。 该文章的实现过程主要分为以下几个步骤: 定义CartItem类 首先定义一个CartItem类,用于表示某一个商品的信息,包括商品的id、na…

    JavaScript 2023年6月10日
    00
  • 在JavaScript中操作时间之getUTCDate()方法的使用

    当我们在JavaScript中需要操作时间时,getUTCDate()是一个非常实用的方法,它可以获取当前时间基于协调世界时(UTC)的日期中的天数,即1到31之间的整数值。 方法语法 getUTCDate()方法的语法如下: dateObject.getUTCDate() 其中,dateObject表示需要获取日期的Date对象。 方法返回值 getUTC…

    JavaScript 2023年5月27日
    00
  • JavaScript代码异常监控实现过程详解

    下面我将详细讲解“JavaScript代码异常监控实现过程详解”的完整攻略,包含以下内容: 什么是JavaScript代码异常监控? JavaScript代码异常监控是指对JavaScript代码运行过程中可能出现的错误进行实时捕获,并对其进行分析和追踪,以便及时发现和解决问题,保证网站的稳定性和可靠性。 实现过程 要实现JavaScript代码异常监控,主…

    JavaScript 2023年5月28日
    00
  • JavaScript表单验证完美代码

    下面是详细讲解 JavaScript 表单验证完美代码的攻略。 什么是 JavaScript 表单验证? JavaScript 表单验证是指利用 JavaScript 编写代码,对用户在表单中输入的数据进行校验。表单验证的目的在于防止用户误输入或恶意输入,确保表单提交的数据格式正确,并提升数据的安全性。 JavaScript 表单验证代码的编写步骤 在进行 …

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