博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组与对象、字符串遍历方法大全
阅读量:6721 次
发布时间:2019-06-25

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

当我们需要遍历一个数组时,第一个想到的就是for,然后用length去判断条件,之后++,但着似乎有些过于老套了。本文主要收集各种遍历方法,主要针对数组,也会有关于对象、字符串的,看完它,你会对遍历有一个新的认识。

params

const ArrayList = [  {
name: '张三', age: 18}, {
name: '李四', age: 20}]const ObjectParams = { name: '孙晓萌', age: '19'}const StringParams = '女帝'复制代码

基础for循环

最传统的for{.....}

// 遍历Arrayfor (let i = 0; i < ArrayList.length; i++) {  console.log(ArrayList[i])}// 遍历Object// 你会发现它并没有走进这个for循环,因为ObjectParams.length === undefinedfor (let i = 0; i < ObjectParams.length; i++) {  console.log(ObjectParams[i])}// 遍历Stringfor (let i = 0; i < StringParams.length; i++) {  console.log(StringParams[i])}复制代码

for in 循环 为遍历数组而生

全能了... 可以遍历数组、对象、字符串

for (let i in ArrayList) {  console.log(ArrayList[i])   // i输出为index}for (let i in ObjectParams) {  console.log(ObjectParams[i])  // i输出为key}for (let i in StringParams) {  console.log(StringParams[i])  // i输出为index}复制代码

for of 循环

es6引入的

for...of语句在可迭代对象(包括 Array, Map, Set, String, TypedArray,arguments 对象等等)上创建一个迭代循环,对每个不同属性的属性值,调用一个自定义的有执行语句的迭代挂钩。。。for...of循环本质上就是调用这个接口产生的遍历器. [for...of](http://es6.ruanyifeng.com/#docs/iterator)
for (let i of ArrayList) {  console.log(i)   }// 数组原生具备iterator接口(即默认部署了Symbol.iterator属性),for...of循环本质上就是调用这个接口产生的遍历器ObjectParams[Symbol.iterator] = ArrayList[Symbol.iterator].bind(ArrayList)for (let i of ObjectParams) {  console.log(i)  // 输出结果与直接遍历ArrayList一样,Object默认是不具备Symbol.iterator属性的,因此无法对Object用for of进行遍历}  for (let i of StringParams) {  console.log(i)  }复制代码

forEach循环

数组特有... 不可break。 forEach()方法是ES5.1标准引入的。

ArrayList.forEach((item, index) => {  console.log(item, index)  // item当前下标对象  index下标})复制代码

while循环

let i = 0while (i < ArrayList.length){  console.log(ArrayList[i])  i++}let j = 0// 你会发现它并没有走进这个while循环,因为ObjectParams.length === undefinedwhile (j < ObjectParams.length){  console.log(ObjectParams[j])  j++}let k = 0while (k < StringParams.length){  console.log(StringParams[k])  k++}复制代码

do while 循环

let i = 0do {  console.log(ArrayList[i])  i++}while (i < ArrayList.length)  let j = 0do {  console.log(ObjectParams) //会输出 因为do while是先走do语句  j++}// 你会发现它并没有走进这个while循环,因为ObjectParams.length === undefinedwhile (j < ObjectParams.length)let k = 0do {  console.log(StringParams[k])  k++}while (k < StringParams.length)  复制代码

map

数组特有... 不可break

ArrayList.map((item, index) => {  console.log(item, index)})复制代码

跳出for循环

break 语句用于跳出循环。上述几种方法中forEach和map不支持break.. continue 用于跳过循环中的一个迭代。 上述几种方法中forEach和map不支持continue..

总结

遍历数组用forEach、map(如果你不需要中断它),需要中断的话就选for...of吧 遍历字符串for..of, for...in 遍历对象for...in while和do while的区别 while先判断条件,do while先执行一次再判断条件。

个人博客:

转载于:https://juejin.im/post/5adf012851882567161a369a

你可能感兴趣的文章
腾讯空间、新浪微博、腾讯微博登录接口
查看>>
nginx 随机启动脚本配置说明
查看>>
2.MySQL源码安装
查看>>
RabbitMQ系列二:管理RabbitMQ
查看>>
ospf虚拟链路
查看>>
Spring的一些配置文件的使用
查看>>
芒果数据库配置文件
查看>>
UIImagePickerController-设置相机(全屏)
查看>>
PL/SQL结构
查看>>
TX Text Control文字处理教程(7)邮件合并
查看>>
ActiveReports 报表应用教程 (6)---分组报表
查看>>
date
查看>>
ReflectUtil
查看>>
MySQL show processlist;命令详解
查看>>
TCP报文结构
查看>>
架构组织形式的讨论,以及架构师之路的建议
查看>>
详解JavaScript模块化开发
查看>>
C之有符号与无符号(二)
查看>>
DOCKER网络代理设置
查看>>
javascript基础语法——变量和标识符
查看>>