如何在 javascript 处展平数组?

How to flattening array at javascript?

我有密码[ 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()

,我只需要 展平

调用 fn 时,spread 将其放入您正在创建的数组中:

const fn = () => [ 5, 6 ];

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

输入数组的每个元素的回调函数的

flatMap() returns 值作为一个数组,然后 returned 展平。例如,可以对 return 进行以下回调:

  • One-to-one: return [ ]
  • One-to-none: return [ ]
  • One-to-many: return [ , -5,任意值]

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

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);