• ES6中flat(),flatMap()使用方法


    实际应用:

    1.代替filter+map的连用

    例:现有一组数据,只展示days>=30的数据,且work为1设置color:“#ffffff”,work:0设置color:“#ff0000”:

    const dataList = [{
        days: 31,
        name: "占位文字31",
        work: 0
    }, {
        days: 30,
        name: "占位文字30",
        work: 1
    }, {
        days: 29,
        name: "占位文字29",
        work: 1
    }, {
        days: 28,
        name: "占位文字28",
        work: 0
    }, {
        days: 27,
        name: "占位文字27",
        work: 1
    }];
    const newdataList = dataList.flatMap(item => {
        if (item.days <= 30) {
            const color = item.work == 1 ? "#ffffff" : "#ff0000"
            item.color = color;
            return [item];
        } else {
            return [];
        }
    })
    console.log(newdataList)
    // [
    //     {"days": 30,"name": "占位文字30","work": 1,"color": "#ffffff"},
    //     {"days": 29,"name": "占位文字29","work": 1,"color": "#ffffff"},
    //     {"days": 28,"name": "占位文字28","work": 0,"color": "#ff0000"},
    //     {"days": 27,"name": "占位文字27","work": 1,"color": "#ffffff"}
    // ]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    基础知识:

    数组的成员有时还是数组,Array.prototype.flat()用于将嵌套的数组“拉平”,变成一维的数组。该方法返回一个新数组,对原数据没有影响。

    [1, 2, [3, 4]].flat()
    // [1, 2, 3, 4]
    
    • 1
    • 2

    flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

    [1, 2, [3, [4, 5]]].flat()
    // [1, 2, 3, [4, 5]]
    
    [1, 2, [3, [4, 5]]].flat(2)
    // [1, 2, 3, 4, 5]
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数

    [1, [2, [3]]].flat(Infinity)
    // [1, 2, 3]
    
    • 1
    • 2

    flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组。

    // 相当于 [[2, 4], [3, 6], [4, 8]].flat()
    [2, 3, 4].flatMap((x) => [x, x * 2])
    // [2, 4, 3, 6, 4, 8]
    
    • 1
    • 2
    • 3

    flatMap()只能展开一层数组。

    // 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
    [1, 2, 3, 4].flatMap(x => [[x * 2]])
    // [[2], [4], [6], [8]]
    
    • 1
    • 2
    • 3

    flatMap()方法的参数是一个遍历函数,该函数可以接受三个参数,分别是当前数组成员、当前数组成员的位置(从零开始)、原数组。

    arr.flatMap(function callback(currentValue[, index[, array]]) {
      // ...
    }[, thisArg])
    
    • 1
    • 2
    • 3

    flatMap()方法还可以有第二个参数,用来绑定遍历函数里面的this。

  • 相关阅读:
    网络安全工具AntSword蚁剑内存马使用
    Git 分支管理规范
    ES6 入门教程 6 正则的扩展 6.10 Unicode 属性类 & 6.11 v 修饰符:Unicode 属性类的运算 & 6.12 具名组匹配
    文件批量移动自动创建文件夹及生成编号重命名,让整理更轻松
    代码随想录训练营day50, 买卖股票的最佳时间III, IV
    大数据,对于生活的改变
    SA8255 Q+A android 登录QNX
    Python几类并行方法比较
    职场工作与生活
    数据结构 - 红黑树
  • 原文地址:https://blog.csdn.net/weixin_37365539/article/details/133809868