对象属性的遍历
ES6 一共有 5 种方法可以遍历对象的属性。
部署Symbol.iterator的数据结构的遍历
有iterator接口的除手动部署的外,包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。可以使用Array.from将类数组转换为数组。
es6使用for...of遍历有iterator接口的数据结构。
对象部署遍历器接口并不是很必要,因为这时对象实际上被当作 Map 结构使用,ES5 没有 Map 结构,而 ES6 原生提供了。
默认调用iterator的情况
- 解构赋值
let set = new Set().add('a').add('b').add('c');
let [x,y] = set;
// x='a'; y='b'
let [first, ...rest] = set;
// first='a'; rest=['b','c'];
- 扩展运算符
- yield*
- 任何接受数组作为参数的场合
遍历语法对比
- for循环
for (var index = 0; index < myArray.length; index++) {
console.log(myArray[index]);}
比较麻烦
- Array.prototype.forEach()
没有办法中止或者跳出 forEach() 循环,除了抛出一个异常。如果你需要这样,使用 forEach() 方法是错误的。
若你需要提前终止循环,你可以使用:for循环,for...of,
Array.prototype.every/some/find/findIndex。
这些数组方法可以对数组元素判断,以便确定是否需要继续遍历:every(),some(),find(),findIndex()
- for...in
es5中的方法,用于遍历对象的键名,会遍历继承的属性。es6一般情况下使用for of。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。