zoukankan      html  css  js  c++  java
  • for in for of foreach及map的区别

    看一个例子

      var arr=[{name:'张三'},{name:'李四'}];
        var obj={name:'张三'};
        for (var i in arr){
            console.log(i); //0 1 数组的下标
        }
        for (var i in obj){
            console.log(i)    //name 对象的key
        }
    
    
        for (var i of arr){
            console.log(i)    //{name:'张三'}   {name:'李四'} 数组的value
        }
        for (var i of obj){
            console.log(i)    //报错  Uncaught TypeError: obj is not iterable  普通对象不能直接使用for of
        }
    for...in   语句用于遍历数组或者对象。其可以中断循环。
    for in   得到对象的key或数组的index,字符串的下标。遍历对象自身的和继承的可枚举的属性, 不能直接获取属性值。其可以中断循环。

    for of 是es6新语法,其和forEach一样,是直接得到value。
    for...of循环:具有 iterator 接口,就可以用for...of循环遍历它的成员(属性值)。for...of循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象、Generator 对象,以及字符串。for...of循环调用遍历器接口,数组的遍历器接口只返回具有数字索引的属性。对于普通的对象,for...of结构不能直接使用,会报错,必须部署了 Iterator 接口后才能使用。其可以中断循环。
     

    forEach: 只能遍历数组,不能中断,没有返回值(或认为返回值是undefined)。

    forEach方法中的function回调有三个参数:
    第一个参数是遍历的数组内容,
    第二个参数是对应的数组索引,
    第三个参数是数组本身

            var arr = [1, 2, 3, 4];
            var sum = 0,
                sum2 = 0;
            var arr2 = arr.forEach(function(value, index, array) {
                console.log(array[index] == value); //打印true 4次
                sum += value;
            });
            arr.forEach(x => sum2 += x);
    
            console.log(sum, sum2); //结果为 10
            console.log(arr2); // undefined  没有返回值

    map: 只能遍历数组,不能中断,返回值是修改后的数组。

    const array = [1, 3, 6, 9];
    const newArray = array.map(function (value) {
      return value + 1;
    });
    console.log(array);       // [1, 3, 6, 9]
    console.log(newArray);  //[2, 4, 7, 10]



  • 相关阅读:
    快速理解Kafka分布式消息队列框架
    消息系统Kafka介绍
    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境
    CSS学习笔记(10)--nth-child和nth-of-type
    CSS学习笔记(9)--详解CSS中:nth-child的用法
    CSS学习笔记(8)--纯CSS绘制三角形(各种角度)
    CSS学习笔记(7)--html页面的CSS、DIV命名规则
    CSS学习笔记(6)--浮动,三列布局,高度宽度自适应
    CSS学习笔记(5)--导航ul,li浮动问题
    Git中保存用户名和密码
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/14461274.html
Copyright © 2011-2022 走看看