如何在 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);
我有密码[ 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);