Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 展平锯齿状多维阵列_Javascript_Multidimensional Array - Fatal编程技术网

Javascript 展平锯齿状多维阵列

Javascript 展平锯齿状多维阵列,javascript,multidimensional-array,Javascript,Multidimensional Array,我需要帮助将阵列展平,如下所示: [1,2,[2,3],[5,[6,1],4],7] 我希望它是这样的 [1,2,2,3,5,6,1,4,7]. 我搜索过类似的内容,找到了[].concat.apply,但它只处理二维数组 我还想使用一种算法,它适用于任何交错的多维数组。请帮忙。Thx我的建议是依赖并使用该函数 _.flattenDeep([1,2,[2,3],[5,[6,1],4],7]) // [ 1, 2, 2, 3, 5, 6, 1, 4, 7 ] 如果您想编写自己的函数,您可能想

我需要帮助将阵列展平,如下所示:

[1,2,[2,3],[5,[6,1],4],7]
我希望它是这样的

[1,2,2,3,5,6,1,4,7].
我搜索过类似的内容,找到了
[].concat.apply
,但它只处理二维数组


我还想使用一种算法,它适用于任何交错的多维数组。请帮忙。Thx

我的建议是依赖并使用该函数

_.flattenDeep([1,2,[2,3],[5,[6,1],4],7])
// [ 1, 2, 2, 3, 5, 6, 1, 4, 7 ]
如果您想编写自己的函数,您可能想看看lodash实现

在伪代码中,有一种递归方法:

result = []
function flatten(array)
  for each element in array
    if element is array
      flatten(element)
    else
      result.append(element)
编辑

这里有一种“手工”的方法,不过我绝对推荐使用经过更好测试的lodash实现

函数展平(arr,结果){
如果(结果===未定义){
结果=[];
}
对于(变量i=0;i//[1,2,2,3,5,6,1,4,7]
我的建议是依赖并使用该函数

_.flattenDeep([1,2,[2,3],[5,[6,1],4],7])
// [ 1, 2, 2, 3, 5, 6, 1, 4, 7 ]
如果您想编写自己的函数,您可能想看看lodash实现

在伪代码中,有一种递归方法:

result = []
function flatten(array)
  for each element in array
    if element is array
      flatten(element)
    else
      result.append(element)
编辑

这里有一种“手工”的方法,不过我绝对推荐使用经过更好测试的lodash实现

函数展平(arr,结果){
如果(结果===未定义){
结果=[];
}
对于(变量i=0;i//[1,2,2,3,5,6,1,4,7]
您可以将
concat包装起来。将
应用到循环中以处理深度嵌套的数组:

while (a.some(Array.isArray))
    a = [].concat.apply([], a)
或者在ES6语法中:

while (a.some(Array.isArray)) 
    a = [].concat(...a);

您可以将
concat.apply
对象包装在一个循环中,以处理深度嵌套的数组:

while (a.some(Array.isArray))
    a = [].concat.apply([], a)
或者在ES6语法中:

while (a.some(Array.isArray)) 
    a = [].concat(...a);

您可能想告诉我们您使用的是什么编程语言。sry我指的是Javascript您可能想告诉我们您使用的是什么编程语言。sry我指的是javascriptthx,但这个问题与网站上的一个问题有关。我只能用香草解决它javascript@nova_n为什么不能使用lodash?只需将
添加到HTML的
部分。此网站仅允许vanila javascript进行培训。Thanx用于手动解决thothx,但此问题与网站上的问题有关。我只能用香草解决它javascript@nova_n为什么不能使用lodash?只需将
添加到HTML的
部分。此网站仅允许vanila javascript用于培训。Thanx用于手动解决方案tho