对象属性的遍历

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*
  • 任何接受数组作为参数的场合

遍历语法对比

  1. for循环
for (var index = 0; index < myArray.length; index++) {
  console.log(myArray[index]);}

比较麻烦

  1. Array.prototype.forEach()

没有办法中止或者跳出 forEach() 循环,除了抛出一个异常。如果你需要这样,使用 forEach() 方法是错误的。

若你需要提前终止循环,你可以使用:for循环,for...of,
Array.prototype.every/some/find/findIndex。

这些数组方法可以对数组元素判断,以便确定是否需要继续遍历:every(),some(),find(),findIndex()

  1. for...in

es5中的方法,用于遍历对象的键名,会遍历继承的属性。es6一般情况下使用for of。


识得唔识得啊
117 声望2 粉丝