美文网首页
forEach、for-in、for-of

forEach、for-in、for-of

作者: 云上笔记 | 来源:发表于2018-12-27 17:28 被阅读0次

    1.forEach

    遍历范围:数组;

    回调函数提供三个参数:
    当前元素item、当前索引index、当前操作的数组array;注意:不能用break跳出循环,不能用return返回。

    var words = ["one", "two", "three", "four"];
    words.forEach(function(item, index, array) {
      console.log(item);
      if (item === "two") {
       // 当数组改变时,数组中元素对应的索引也会随之改变
        words.shift();
      }
    // console.log(array);
    });
    // 输出结果为 one two four
    

    2.for-in

    for-in 获取的是键名,且键名是字符串,设计的初衷是针对键名为字符串的对象,对数组友好度不高

    遍历范围:
    • 数组
    • 对象
    • 字符串
    var b = {name: "lili", age: 15};
    for(let i in b){
      console.log(i); // 此处i为对象中的键 name、age;如果遍历的是数组,则 i 为数组索引
    }
    

    3.for-of

    for-of获取的是键值,如果要获取数组中的键名,可用Array.keys();
    可以使用break、return等关键字处理循环;

    遍历范围:
    • 数组
    • Set
    • Map
    • 类数组对象,如 arguments 对象、DOM NodeList 对象
    • Generator 对象
    • 字符串
    var myarr = ['a', 'b', 'c', 'd'];
    for (let a of myarr ) {
      console.log(a); // a b c d
    }
    var b= {name: 'slili', age: 15};
    // 注意:直接遍历对象会报错,可以转换后遍历
    for (var key of Object.keys(b)) {
      console.log(key + ": " + b[key]);
    }
    
    
    // 对比
    let arr = [3, 5, 7, foo: "hello"];
    for (let i in arr) {
      console.log(i); // "0", "1", "2", "foo"
    }
    
    for (let i of arr) {
      console.log(i); //  "3", "5", "7"
    }
    

    相关文章

      网友评论

          本文标题:forEach、for-in、for-of

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