gpt4 book ai didi

javascript - 减少和连接(或深度展平)数组数组的最快方法

转载 作者:数据小太阳 更新时间:2023-10-29 04:49:25 30 4
gpt4 key购买 nike

作为输入,我收到两种类型的数组数组,这些数组由表示多边形和多多边形几何形状的 x 和 y 坐标组成。

array1 表示简单多边形几何的坐标,array2 表示多多边形几何:

var array1 = [[[0 , 0], [0, 1], [0 ,2]]]

var array2 = [[[[0, 0] , [0, 1], [0, 2]], [[1, 0], [1, 1], [1 ,2]]]]

多多边形几何 (array2) 由比简单多边形几何 (array1) 深一层的数组表示。

我想展平这些数组以获得这些输出:

   if input is array1 type : array1_out = [[0, 0, 0, 1, 0, 2]]

if input is array2 type : array2_out = [[0, 0, 0, 1, 0, 2], [1, 0, 1, 1, 1, 2]]

我的功能如下:

for (i=0; i < array_input.length; i++){
var array_concat = array_input[i].reduce(function(a, b){
return a.concat(b);
});
}

使用上述函数,array1 的输出是正确的,但 array2 的输出如下:

[[[0, 0] ,[0, 1], [0, 2]], [1, 0], [1, 1], [1, 2]]]

是否有函数可以深度扁平化这两种类型的数组?

编辑:这里的性能真的很重要,因为数组真的很大

最佳答案

您可以在 Underscore 中找到许多用于操作数组和集合的有用工具。和 lodash图书馆。

var arrays1 = [[[0 , 0], [0, 1], [0 ,2]]];
var array2 = [[[[0, 0] , [0, 1], [0, 2]], [[1, 0], [1, 1], [1 ,2]], ]];

var array1_out = flattenSimple(arrays1);
console.log(JSON.stringify(array1_out));

var array2_out = flattenMultiple(array2);
console.log(JSON.stringify(array2_out));

function flattenSimple(array_input) {
return _.flatten(array_input);
}

function flattenMultiple(array_input) {
array_input = array_input[0];
return array_input.map(function(a) {
return _.flatten(a);
});
}

将产生您正在寻找的输出。我将它分解为每种类型的扁平化 fn,但您可以使用带有标志或更复杂逻辑的相同 fn 来了解您正在使用哪种类型。

Fiddle

关于javascript - 减少和连接(或深度展平)数组数组的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32272089/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com