forEach(),map(),filter()之间的相同点与不同点

359 阅读2分钟
相同点:
    1、都可以用来循环数组,输出数组元素、元素索引、原数组
不同点:
    1、forEach没有返回值,只是单纯的遍历,可以在循环里处理数据,但会改变原数组
    2、map 遍历并对其进行操作,返回新数组,不改变原数组
    3、filter 筛选符合条件的元素并返回新数组,不改变原数组
    4、如果用map来筛选是否满足条件的数组元素,返回值为true或false
    
1、array.forEach()
    
    let arr = [40, 100, 1, 5, 25, 10]
    arr.forEach((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        arr[index] = item + 1
        console.log(value, index, array)
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })
    console.log(arr)
    输出:[41, 101, 2, 6, 26, 11]

2、array.map()

    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.map((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        console.log(value, index, array)
        return value * 2
        // return value > 20
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })
    console.log(arr)
    console.log(arr1)
    输出:  [40, 100, 1, 5, 25, 10]
            [80, 200, 2, 10, 50, 20]  // []
    注意:map函数循环处理不会改变原数组,并且不会再空数组上执行
    
3、array.filter()

    let arr = [40, 100, 1, 5, 25, 10]
    let arr1 = arr.filter((value, index, array) => {
        //value代表循环数组后每一项元素,index代表每一项元素的索引,array代表原数组
        console.log(value, index, array)
        return value > 18
        输出:  40  0 [40, 100, 1, 5, 25, 10]
                100 1 [40, 100, 1, 5, 25, 10]
                1   2 [40, 100, 1, 5, 25, 10]
                5   3 [40, 100, 1, 5, 25, 10]
                25  4 [40, 100, 1, 5, 25, 10]
                10  5 [40, 100, 1, 5, 25, 10]
    })
    console.log(arr)
    console.log(arr1)
    输出:  [40, 100, 1, 5, 25, 10]
            [40, 100, 25]