美文网首页
关于JS中的循环

关于JS中的循环

作者: 飞凡的陀螺 | 来源:发表于2018-08-12 21:45 被阅读2次

    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

    相关文章

      网友评论

          本文标题:关于JS中的循环

          本文链接:https://www.haomeiwen.com/subject/amsebftx.html