繁体   English   中英

将数组展平为2D

[英]Flatten array to 2D

我知道在这个问题上有几个答案,但是当我试图制作自己的答案时,我对递归函数的工作方式感到非常迷茫,这就是我尝试过的:

 function flatcoords(arr) { for (i = 0; i < arr.length; i++) { const value = arr[i]; if (value.isArray) { return flatcoords(value); } else { return arr; } } } const arr_test = [ [ [1, 2], [1, 2] ], [1, 2], [1, 2], [ [ [1, 2], [1, 2] ] ] ]; //wanted_result = [ [1,2],[1,2],[1,2],[1,2],[1,2],[1,2] ] console.log(flatcoords(arr_test)); 

我希望结果是一个2D数组,我在逻辑中缺少什么?

首先,您需要在使用前声明所有变量。 然后,您可以使用Array.isArray检查项是否为数组。

在这种情况下,我建议检查checked元素的第一项,如果它也是一个数组,在这种情况下是平面数组。

结果,一个数组派上用场,因为不仅要返回一个元素,而且还要返回所有元素。 虽然数组有更多项,但您需要将所有项追加到现有结果数组中。

 function flatcoords(array) { var result = [], value, i; for (i = 0; i < array.length; i++) { value = array[i]; if (Array.isArray(value) && Array.isArray(value[0])) { result = result.concat(flatcoords(value)); } else { result.push(value); } } return result; } const arr_test = [[[1, 2], [1, 2]], [1, 2], [1, 2], [[[1, 2], [1, 2]]]]; console.log(flatcoords(arr_test)); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM