zoukankan      html  css  js  c++  java
  • map,forEach

    一、相同点:

    1.都是循环遍历数组中的每一项

    2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)

    3.匿名函数中的this都是指向window

    4.只能遍历数组

    二、不同点

    1.map()会分配内存空间存储新数组并返回,forEach()不会返回数据。

    2.forEach()允许callback更改原始数组的元素(现在还不是很懂)。map()返回新的数组。

    map:新数组,有返回

    var array = [1, 2, 3, 4];
    let forEachArr = array.forEach((value,index,array)=> {
        array[index] = value*10;  
        return value*2
    });
    console.log(forEachArr)  //undefined 不会生成新数组
    console.log(array)  //[10, 20, 30, 40] 直接更改原始数据

     foreach:无返回

    var array = [1, 2, 3, 4];
    let mapArr = array.map((value,index,array)=>{
      array[index] = value*10;  
      return value*2
    });
    console.log(mapArr)  // [2, 4, 6, 8] // 返回生成新数组 return
    console.log(array)   // [10, 20, 30, 40] 直接更改原数组

    1、map:

      eg:

      map()方法创建了一个新数组,但新数组并不是在遍历完array1后才被赋值的,而是每遍历一次就得到一个值

    var array = [1,4,9,16];
    const map = array.map(x => x *2);
    console.log(map);       //> Array [2,8,18,32]
    var array = [1, 4, 9, 16];
    const map = array.map(x => {
        if (x == 4) {
            return x * 2;
        }
    });
    console.log(map); //Array [undefined, 8, undefined, undefined]
    var array = [1, 4, 9, 16];
    const map = array.map(x => {
        if (x == 4) {
            return x * 2;
        }
        return x;
    });
    console.log(map); //Array [1,8,9,16]

     

  • 相关阅读:
    JQuery Ajax使用及注意事项
    边框叠加
    AngularJS的相关应用
    JS基础,你需要掌握的要点!
    JS基础部分小结
    JS的Dom树小结
    JQuery事件与动画
    HTML
    项目
    BZOJ4851: [Jsoi2016]位运算
  • 原文地址:https://www.cnblogs.com/init00/p/12627512.html
Copyright © 2011-2022 走看看