【问题标题】:How to flattening array at javascript?如何在javascript中展平数组?
【发布时间】:2019-11-16 17:01:16
【问题描述】:

我有代码[ 1, 2, 3, fn(), 7, 8 ]

fn 下一步:

fn(){ return [ 5, 6 ] }

申请fn()调用获取哪个运营商:

[ 1, 2, 3, 5, 6, 7, 8 ]

代替:

[ 1, 2, 3, [ 5, 6 ], 7, 8 ]

当然可以这样做:

[ 1, 2, 3, fn(), 7, 8 ].flat()

但在这种情况下,其他元素也会被展平。我需要fn()进行展平

【问题讨论】:

    标签: javascript arrays flatten


    【解决方案1】:

    flatMap() 将输入数组的每个元素的回调函数的值作为数组返回,然后将其展平返回。例如,可以使回调返回以下内容:

    • 一对一: return [ value ]
    • 一对一: 返回 [ ]
    • 一对多: return [ value, value -5, arbritaryValue ]

    在演示中,如果值是一个数组——它将按原样返回——否则它将在一个数组中返回。本质上,所有值都将从回调中返回为一个数组,该数组又被展平。

    const fn = () => [5, 6];
    
    let array = [1, 2, 3, 4, fn(), 7, 8];
    
    const result = array.flatMap(node => Array.isArray(node) ? node : [node]);
    
    console.log(result);

    【讨论】:

    • 我只需要对fn() 进行展平。如果第二个元素是[2],则不需要flat
    【解决方案2】:

    fnspread 调用到您正在创建的数组中时:

    const fn = () => [ 5, 6 ];
    
    const arr = [ 1, 2, 3, ...fn(), 7, 8, [9, 10]]
    console.log(arr);

    【讨论】:

      猜你喜欢
      • 2019-11-24
      • 2021-06-03
      • 2021-10-16
      • 1970-01-01
      • 2014-05-21
      • 2011-12-14
      • 2015-07-14
      • 2018-02-24
      相关资源
      最近更新 更多