JS数组遍历的6种方法

JS数组遍历的6种方法1 for 遍历数组 1 1for 的普通遍历 varname Peter Stark Jack for 循环 for vari 0 i

1、for 遍历数组

1.1 for 的普通遍历

var name = ['Peter','Stark','Jack']; // for 循环 for(var i = 0; i < name.length; i++) { 
    console.log(name[i]); } 

1.2 for 优化版遍历

var name = ['Peter','Stark','Jack']; // 先缓存 name.length for(var i = 0, len = name.length; i < len; i++) { 
    console.log(name[i]); } 

2、while 遍历数组

// while 循环 var i = 0; while (i < name.length) { 
    console.log(name[i]); i++; } //while 逆向遍历 var i = name.length; while (i--) { 
    console.log(name[i]); } 

3. for…in 方法

数组既可遍历对象,也可遍历数组。遍历数组时也会遍历非数字键名,所以不推荐 for…in 遍历数组

3.1 遍历数组

var a = [1, 2, 3]; for (var key in a) { 
    console.log(a[key]); } /* 1 2 3 */ 

3.2 遍历对象

const object = { 
    name: 'Peter', age: 12, isHuman: true }; for (let key in object) { 
    console.log(key + '---' + object[key]); } 

4. for…of 方法 (ES6)

var arr = ['a','b','c']; for(let item of arr) { 
    console.log(item); } 

5. forEach() 方法

用来遍历数组中的每一项,不影响原数组,性能差

缺陷 你不能使用break语句中断循环,也不能使用return语句返回到外层函数。

5.1 遍历普通数组

var arr = [1,2,3,4]; arr.forEach = (function(item) { 
    console.log(item); }) 

5.2 forEach() 遍历对象类型数组

const info = [ { 
   id: 1000, name: 'zhangsan'}, { 
   id: 1001, name: 'lisi'}, { 
   id: 1002, name: 'wangwu'} ] arr.forEach( function(item) { 
    console.log(item.id + '---' + item.name); }) /* 1---zhangsan 2---lisi 3---wangwu */ 

6. map() 方法

支持return,相当与原数组克隆了一份,把克隆的每项改变了,不影响原数组

var arr = [1,2,3,4]; arr.map( function(item) { 
    return item; }) 

当然有了 箭头函数 => 后更方便

var arr = ['a','b','c']; var newArray = arr.map(x => x); alert(newArray); // ['a','b''c'] 

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果

var newArray = arr.map(function (item) { 
    return [expression]; }) 

例如

var arr = [1,2,3,4]; var newArray = arr.map( x => x * x ) alert(newArray); // [1,4,9,16] 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177134.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:14
下一篇 2026年3月26日 下午8:14


相关推荐

  • navacate连接不上mysql_navicat连接mysql失败怎么办

    navacate连接不上mysql_navicat连接mysql失败怎么办Navicat 连接 mysql 数据库时 不断报 1405 错误 下面是针对这个的解决办法 MySQL 服务器正在运行 停止它 如果是作为 Windows 服务运行的服务器 进入计算机管理 gt 服务和应用程序 gt 服务 如果服务器不是作为服务而运行的 可能需要使用任务管理器来强制停止它 创建 1 个文本文件 此处命名为 mysql init txt 并将下述命令置于单一行中 SETPASSW

    2025年7月10日
    8
  • 华为pimsm组播配置_华为m6卡槽

    华为pimsm组播配置_华为m6卡槽当你想要放弃了,一定要想想那些睡得比你晚、起的比你早、跑得比你卖力、天赋比你还高的牛人,他们早已在晨光中,跑向那个你永远只能眺望的远方。—马云文章目录一、组播地址划分二、拓扑三、基本配置四、PIM-SM的RPT共享树构建五、PIM六、PIM-SM的SPT七、PIM-SM基本概述PIM-SM(ProtocolIndependentMulticast-SparseMode)称为协议无关组播-稀疏模式。属于稀疏模式的组播

    2026年2月20日
    3
  • Mybatis-Plus详解

    Mybatis-Plus详解Mybatis Plus 介绍简介 MyBatis Plus opensnewwind 简称 MP 是一个 MyBatis opensnewwind 的增强工具 在 MyBatis 的基础上只做增强不做改变 为简化开发 提高效率而生 特性 官网提供 无侵入 只做增强不做改变 引入它不会对现有工程产生影响 如丝般顺滑损耗小 启动即会自动注入基本 CURD 性能基本无损耗 直接面向对象操作 BaseMapper 强大的 CRUD 操作 内置通用 Mapper 通用 Serv

    2026年3月26日
    2
  • n8n与Make:选择合适的工作流自动化工具

    n8n与Make:选择合适的工作流自动化工具

    2026年3月15日
    2
  • JDBC prepareStatement 与Statement的区别

    JDBC prepareStatement 与Statement的区别

    2021年10月3日
    54
  • TCP 和 UDP 的区别

    TCP 和 UDP 的区别前言 UDPTCPTCP 的三次握手 TCP 四次挥手累计确认顺序问题和丢包问题流量控制的问题拥塞控制的问题总结及面试问题前言前端的面试中经常问的 TCP 和 UDP 的区别 网上也有好多内容 比如 TCP 和 UDP 的区别 TCP 是面向连接的 UDP 是面向无连接的 UDP 程序结构较简单 TCP 是面向字节流的 UDP 是基于

    2026年3月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号