关于JS中的循环

JS 中的循环有for...in, for..of, forEach

  1. forEach遍历数组的时候是无法通过break或return false来中断。
var arr = [3, 5, 7];

arr.forEach(value => {
  console.log(value);
  if (value == 5) {
    // 无效
    return false;
  }
});
// 结果是:
// 3
// 5
// 7

可以使用for...of

var arr = [3, 5, 7];

for (let value of arr) {
  console.log(value);
  if (value == 5) {
    break;
  }
}
// 结果是:
// 3
// 5

for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

let str = 'boo';

for (let value of str) {
  console.log(value);
}
// 结果是:
// "b"
// "o"
// "o"

总结:

  1. 对于对象遍历,用for...in
  2. 对于数组遍历,如果不需要知道索引,for..of迭代更合适,因为还可以中断;如果需要知道索引,则forEach()更合适;
  3. 对于字符串,类数组,arguments对象、DOM NodeList 对象等只要部署了Symbol.iterator属性,用for...of循环遍历它的成员。

iterator 就是迭代器或遍历器,任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员)。具体参见

用 for...of 遍历对象需要配合 Object.keys / Object.values / Object.entries

let obj = {name: 'xx', age: 18}
for(let [key, value] of Object.entries(obj)) {
   console.log(key, value);
}

参考:
https://www.zhangxinxu.com/wordpress/2018/08/for-in-es6-for-of/
http://es6.ruanyifeng.com/#docs/iterator#for---of-%E5%BE%AA%E7%8E%AF

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容