我如何将一组多维数组转换为一个数组? Javascript

How would I convert an array of multi-dimensions into one single array? Javascript

任务:有人给了你一个乱七八糟的数组!将此多维数组转换为单个数组。 我知道如何将二维数组转换为单个数组。 如何将多维数组转换为单个数组?

我的二维数组有自己的数组。

例如,如果给你一个这样的数组,我如何将整个数组转换成一个数组?

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 和扩展运算符,如果我正在处理二维数组,它会很好地工作,但如果我的二维数组有自己的数组,则效果不佳。

你会如何解决这个问题?

您可以使用递归减少到 return 平面数组。

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