ECMAScript5中数组方法forEach()与map()的区别

forEach()

中文:为每个;

遍历数组且为每个元素调用指定函数,不改变调用数组,没有返回值;

指定函数可以使用三个参数:元素,索引,数组本身;当回调函数仅使用元素参数时,可以省略索引和数组参数;

forEach()无法在所有元素传递给指定函数之前中止遍历,也就不能再里面使用break语句,而for可以。

但是可以通过array[index]可以改变数组值;

 

    let arr = [1, 2, 3];
    arr.forEach(element => {
        element = element * 2;
        console.log(element);           //2,4,6
    });
    console.log(arr);                  //[1,2,3]
    
    let arr2 = arr.forEach(element => {
        element = element * 2;
    });
    console.log(arr2);                 //undefined

    arr.forEach(
        (value, index, arr) => {
            arr[index] = value * 2
        }
    );
    console.log(arr);                 //[2,4,6]

map()

中文:为每个;

调用数组的每个元素传递给指定函数,并返回一个新数组,不会对没有值的数组元素执行函数,不修改调用的数组;

有 3 个参数:元素,索引,数组本身;当回调函数仅使用元素参数时,可以省略索引和数组参数​​​​​​​;

如果是稀疏数组,返回的也是相同方式的稀疏数组,相同的长度和缺失元素。

  arr.map(element => {
        return element * 2;
    });
    console.log(arr);
    let arr1 = arr.map(element => {
        return  element * 2;
    });
    console.log(arr1);                 //[2,4,6]

 

你可能感兴趣的:(笔记)