数组的方法记录

208 阅读2分钟

看到大佬的文章,忍不住记录一下,巩固一下记忆;url:juejin.cn/post/684490…

Array.prototype.forEach

  • 特点

    • 没有返回值

    • 可以改变自身数据 仅引用类型,基本类型不可改变

    • 不可跳出循环

    数据类型:Number Boolean undefined Object Function String Null
    基本类型:Number Boolean  String  undefined null
    引用类型:Object  Function

  • 示例

    let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];
    arr.forEach(item => {
        item.a ++;
    })
    console.log(arr)
    //  [{a: 2}, {a: 3}, {a: 4}, {a: 5}]
    -----------------------------------------------------------------------------------------------
    let arr = [1, 2, 3, 4];
    arr.forEach(item => {
        item ++;
    })
    console.log(arr)
    //  [1, 2, 3, 4]
    

Array.prototype.map

  • 特点
    • 会新建一个数组,需要 return 来返回指定内容
    • 它返回数组的 length 和原数组一致,若没有 retrun 的话会是 [ undefined, undefined ]
    • map 不会改变原数组,不严谨:不会改变基本类型的数组,引用类型会被改变(不建议)
  • 示例
    let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; 
    let arr1 = arr.map((item, index, arr) => { 
        // item: 当前循环到的对象 {a:1} -> Object
        // index: 数组当前的下标 0 -> Number
        // arr: 当前数组 [{a: 1}, {a: 2}, {a: 3}] -> Array
        return item.a
    })
    console.log(arr1)
    // [1, 2, 3, 4]
    -------------------------------------------------------------------------------------
    let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; 
    let arr1 = arr.map((item, index, arr) => { 
        item.a++
        if (item > 3) return item
    })
    console.log(arr1) // [undefined, undefined, 4, 5]
    

Array.prototype.filter

  • 特点
    • 创建新数组,需要 return,不会改变基本类型的原数组,引用类型还是会改变(不建议)
    • 返回 return 的信息,和 map 不同之处在于 length 不会一致,只会返回 return 的信息
    • 注意 return 只会返回当前 item,因为它只会判断 return 的是 Boolean
  • 示例
    let arr = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; 
    let arr1 = arr.filter((item, index, arr) => { 
        // item: 当前循环到的对象 {a:1} -> Object
        // index: 数组当前的下标 0 -> Number
        // arr: 当前数组 [{a: 1}, {a: 2}, {a: 3}] -> Array
        if (item.a > 2) return true;
    })
    console.log(arr1)
    // [{a: 3}, {a: 4}]
    

Array.prototype.sort

  • 特点
    • 排序:可以把一个数组的数字或者字母按钮顺序排列
    • 会直接改变原数据,直接对原数据进行排序,但是会返回一个新的数组

// 完善中 !!