美文网首页
数据方法 flat和flatMap

数据方法 flat和flatMap

作者: 每日log | 来源:发表于2021-01-02 11:32 被阅读0次

    1. flat

    作用:会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回
    返回值:一个包含将数组与子数组中所有元素的新数组
    是否改变原有数组:否

    语法:

    var newArray = arr.flat([depth])
    

    depth 可选
    指定要提取嵌套数组的结构深度,默认值为1

    例1:

    var arr = [1, 2, [3, 4]];
    console.log(arr.flat()) // [1, 2, 3, 4]
     [1, 2, [3, 4]];
    

    例2:

    var arr = [1, 2, [3, 4, [5]]];
    console.log(arr.flat(2)); // [1, 2, 3, 4, 5]
    console.log(arr) //  [1, 2, [3, 4, [5]]]
    

    例3:

    flat() 方法会移除数组中的空项:

    var arr = [1, 2, ,4, 5];
    console.log(arr.flat(2)); // [1, 2, 4, 5]
    console.log(arr) //  [1, 2, ,4, 5];
    

    2. flatMap

    作用:首先使用映射函数映射每个元素,然后将结果压缩成一个新数组
    返回值:一个新的数组,其中每个元素都是回调函数的结果,并且结构深度 depth值为1
    是否改变原有数组:否

    语法:

    var new_array = arr.flatMap(
    function callback(currentValue[, index[, array]]) {
        // return element for new_array
    }[, thisArg])
    

    参数:
    callback:可以生成一个新数组中的元素的函数,可以传入三个参数:
    currentValue:当前正在数组中处理的元素
    index:可选。数组中正在处理的当前元素的索引。
    array:可选。被调用的 map 数组
    thisArg:可选。执行 callback 函数时 使用的this 值。

    flatMap 方法与 map 方法和深度depth为1的 flat 几乎相同
    map

    var arr = [1, 2, 3];
    var arg = arr.map(x => [x * 2]);
    console.log(arg) // [[2], [4], [6]]
    console.log(arr)// [1, 2, 3]
    

    flatMap:

    var arg2 = arr.flatMap(x => [[x * 2]]);
    console.log(arg) //[[2], [4], [6]]
    console.log(arr)// [1, 2, 3]
    



    更多请参考:你一定会用到的数组的31个方法

    相关文章

      网友评论

          本文标题:数据方法 flat和flatMap

          本文链接:https://www.haomeiwen.com/subject/qsojoktx.html