博客
关于我
js数组遍历和对象遍历
阅读量:133 次
发布时间:2019-02-28

本文共 2043 字,大约阅读时间需要 6 分钟。

JS数组遍历的几种方式

在JS中,数组遍历是日常开发中常用到的操作。以下是几种常用的数组遍历方式及其特点分析:

1. 普通for循环

普通的for循环是最常用的数组遍历方式,适用于大多数简单的遍历需求。它的优点是直接、高效,且在处理较大数组时表现稳定。

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

2. 优化版for循环

为了提升性能,可以将数组的长度缓存起来,避免每次循环都去计算数组的长度。这种优化特别适用于处理较大数组时。

var arr = [1, 2, 0, 3, 9];for (var j = 0, len = arr.length; j < len; j++) {    console.log(arr[j]);}

3. forEach

forEach是ES5引入的数组方法,设计初衷是为了简化数组的遍历操作。它的语法简洁,但在性能上相比普通for循环略显不足。

arr.forEach(function(value, i) {    console.log('forEach遍历:' + i + '--' + value);});

优点:

  • 语法简洁,易于使用
  • 适合不需要处理索引的简单遍历

缺点:

  • 不支持break、continue、return等控制语句
  • 不能直接返回值

4. map

map方法与forEach类似,但它允许在遍历过程中返回值,并将结果存储在新数组中。这种方法在处理需要转换每个元素的场景下非常有用。

var temp = arr.map(function(val, index) {    console.log(val);    return val * val;});console.log(temp);

优点:

  • 支持返回值和中间操作
  • 语法与 forEach 相似

缺点:

  • 性能上稍逊于普通for循环
  • 不支持break、continue等控制语句

5. for-of

for-of是ES6引入的数组遍历方法,优化了传统的for-in循环,解决了许多历史遗留问题。它支持数组、类数组对象和字符串的遍历,且对break、continue、return等控制语句的支持更为完善。

for (let i of arr) {    console.log(i);}

优点:

  • 性能接近普通for循环
  • 支持break、continue、return等控制语句
  • 可以遍历大多数类数组对象和字符串

缺点:

  • 与传统for循环相比,语法上稍有复杂

JS对象遍历

在JS中,对象的遍历主要有以下几种方法:

1. for-in

for-in循环是专门用于遍历对象属性的,不适用于数组。它可以遍历对象本身的可枚举属性,以及从原型链上继承的可枚举属性。

let obj = {a: 'b', c: 'd'};for (let key in obj) {    console.log('key: ' + key + ', value: ' + obj[key]);}

注意事项:

  • 遍历时会包含原型链上的属性
  • 在实际应用中,通常会结合hasOwnProperty来过滤本身属性

2. Object.keys()

Object.keys()方法用于获取对象自身的可枚举属性,并返回一个数组。这种方法适用于需要获取对象属性名称的场景。

let obj = {a: 'b', c: 'd'};let keys = Object.keys(obj);console.log(keys); // ["a", "c"]

特点:

  • 只遍历对象自身的属性
  • 不包含原型链上的属性

3. Object.getOwnPropertyNames()

Object.getOwnPropertyNames()方法用于获取对象的所有属性,包括不可枚举的属性。它比Object.keys()更适合需要处理对象元数据的场景。

let obj = {a: 'b', c: 'd'};Object.defineProperty(obj, 'non-em', {    enumerable: false,    value: 'deejay'});let keys = Object.getOwnPropertyNames(obj);console.log(keys); // ["a", "c", "non-em"]

特点:

  • 包含所有属性,包括不可枚举的
  • 适合处理对象元数据

总结

在JS中,数组和对象的遍历各有特点。数组遍历主要使用for循环、forEach、map和for-of等方法,而对象遍历则常用for-in、Object.keys和Object.getOwnPropertyNames。选择具体方法时,应根据需求考虑性能、语法复杂度和是否需要处理中间结果等因素。

转载地址:http://zbod.baihongyu.com/

你可能感兴趣的文章
Ofelia:在Pd中融合openFrameworks与Lua的创意编程利器
查看>>
Office 2024 专业增强版安装教程(附安装包),高效办公由此开启
查看>>
Office 365身份认证管理-安装并配置活动目录同步
查看>>
Office online server 部署
查看>>
office 中墨迹书写工具_自动生成英文书法稿纸的几个网址,及Briem 的cursive italic书写教程...
查看>>
Office2010每次启动都要配置的解决办法
查看>>
Office2016 打开excel出现丢失appvisvsubsystems32.dll
查看>>
Office365 PowerShell打开邮箱审计功能
查看>>
OfficeWeb365 Indexs 任意文件读取漏洞复现
查看>>
OfficeWeb365 Readfile 任意文件读取漏洞复现
查看>>
OfficeWeb365 SaveDraw 文件上传漏洞复现
查看>>
office中的所有content type
查看>>
office之Excel 你会用 Ctrl + E 吗?
查看>>
Office办公软件里的“开发工具”选项卡-ChatGPT4o作答
查看>>
Office开发工具选项卡中的控件-ChatGPT4o作答
查看>>
Offline Installation the .NET Framework 3.5 on Windows 8
查看>>
OGC服务标准(地图资料篇.3)
查看>>
OGG初始化之使用数据库实用程序加载数据
查看>>
ogg参数解析
查看>>
ognl详解
查看>>