任务:有人给你一个乱七八糟的数组!将此多维数组转换为单个数组。 我知道如何将二维数组转换为单个数组。 我如何将多维数组转换为单个数组?
我的2d数组有自己的数组。
例如,如果给你一个这样的数组,我怎么把整个数组转换成一个数组呢?
arr = [[1,[2]],[3,[4]],[5,[6]],[7,[8]]] ==> [1,2,3,4,5,6,7,8]
EX:
function mergeArrays(arr) {
var inOne = arr.reduce(function(a,b) {
return a.concat(b); // works well with 2-dimension, but not this problem.
})
return inOne;//output is [1,Array(1),3,Array(1),1,5,Array(1),2,7,Array(1),3]
} // I need just one array. like this => [1,2,3,4,5,6,7,8]
mergeArrays([[1,[2]],[3,[4]],[5,[6]],[7,[8]]]);
// should equal arr = [[1,[2]],[3,[4]],[5,[6]],[7,[8]]] => [1,2,3,4,5,6,7,8]
我想我要问的是你如何将任何维度的数组转换为单个数组。
我已经使用了concat和spread运算符,如果我正在处理一个二维数组,它会很好用,但如果我的二维数组有自己的数组则不行。
你会如何解决这个问题?
答案 0 :(得分:2)
您可以使用递归和reduce来返回平面数组。
function mergeArrays(arr) {
return arr.reduce((r, e) => r.concat(Array.isArray(e) ? mergeArrays(e) : e), [])
}
console.log(mergeArrays([[1,[2]],[3,[4]],[5,[6]],[7,[8]]]))