怎么用for循环输入数组

概念

ES6引入了for...of循环作为遍历所有数据结构的统一方法。

一个数据结构只要部署了Symbol.iterator属性,就被视为具有iterator接口,就可以用for...of循环遍历它的成员,也就是说,for...of循环内部调用的是数据结构的Symbol.iterator方法。

for...of循环可以使用的范围:

  • 字符串;
  • 数组;
  • Set和Map结构;
  • 某些类似数组的对象(比如arguments对象、DOM NodeList对象);
  • Generator对象。

实例

1.数组

数组原生具备iterator接口(即默认部署了Symbol.iterator属性),for...of循环本质就是调用这个接原由网口产生的遍历器。

怎么用for循环输入数组

for...of循环可以代替数组实例的forEach方法。

J//www.58yuanyou.comava原有的for...in循环只能获取对象的键名,不能直接获取键值。ES6提供的yvbptfor...of循环运行遍历获得键值(可以借助数组实例的entries方法和keys方法)。

怎么用for循环输入数组

2.Set和Map结构

Set和Map结构原生具有Iterator接口,可以直接使用for...of循环。

怎么用for循环输入数组

3.计算生成的数据结构

有些数据结构是在现有数据结构的基础上计算生成的。比如ES6的数组、Set、Map都部署了以下三个方法,调用后都返回遍历器对象。

entries():返回一个遍历器对象,用于遍历键值,键名组成的数组。(对于数组,键名就是索引值;对于Set键名和键值相同;Map结构的iterator接口默认就是调用entries方法。)

keys():返回一个遍历器对象,用于遍历所有键名。

values():返回一个遍历器对象,用于遍历所有的键值。

怎么用for循环输入数组

4.类似数组的对象

a.字符串:

怎么用for循环输入数组

b.DOM NodeList对象

怎么用for循环输入数组

c.arguments对象

怎么用for循环输入数组

d.其他

并不是所有类似数组的对象都具有Iterator接口,一个简便的方法就是使用Array.from方法将其转为数组。

怎么用for循环输入数组

5.对象

对于普通的对象,for...of结构不能直接使用,否则会报错,必须部署了Iterator接口才能够使用。但这样的情况下,仍然可以用for...of循环遍历键名。

怎么用for循环输入数组

一种解决方式是,使用Object.keys()将对象的键名生成一个数组,然后遍历这个数组。

怎么用for循环输入数组

另一种解决方法是,Generator函数将对象重新包装一下

怎么用for循环输入数组

与其他遍历语法比较

1.与数组for循环和f原由网orEach对比

以数组为例,for循环写法较麻烦,因此数组提供了内置forEach方法,而forEach循环,无法中途跳出循环,break或return命令都不行。

2.与for...in循环对比

for...in循环可以遍历数组的键名,但是缺点也有。

缺点:

数组的键名是数字,但for...in循环是以字符串作为键名

for...in循环不仅可以遍历数字键名,还会遍历手动添加的其他键www.58yuanyou.com,甚至包括原型链上的键

某些情况下,for...in循环会以任意顺序遍历键名

总之:for...in循环主要为遍历对象而设计,不适用遍历数组

3.for...of优势

有着同for...in一样简洁的语法,但没有for...in的那些缺点

不同forEach方法,可以用break,continue,return配合使用

提供了变量所有数据结构的统一操作接口

内容版权声明:除非注明原创否则皆为转载,再次转载请注明出处。

文章标题: 怎么用for循环输入数组

文章地址: www.58yuanyou.com/jiqiao/251348.html

相关推荐