乐趣区

js的遍历

对象属性的遍历

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。

退出移动版