【问题标题】:How would I convert an array of multi-dimensions into one single array? Javascript如何将一组多维数组转换为一个数组? Javascript
【发布时间】:2018-11-27 19:12:02
【问题描述】:

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

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

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

arr = [[1,[2]],[3,[4]],[5,[6]],[7,[8]]] ==> [1,2,3,4,5,6,7,8]

前:

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

你会怎么解决这个问题?

【问题讨论】:

  • import flattenDeep from "lodash/flattenDeep"; flattenDeep(arr);

标签: javascript arrays multidimensional-array flatten


【解决方案1】:

您可以使用递归和 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]]]))

【讨论】:

    猜你喜欢
    • 2014-06-03
    • 2011-08-24
    • 2019-04-03
    • 1970-01-01
    • 2023-03-26
    • 2019-06-29
    相关资源
    最近更新 更多