Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Javascript Objects - Fatal编程技术网

Javascript 将矩阵转换为列式新平面阵列

Javascript 将矩阵转换为列式新平面阵列,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我使用的是一个数组数组,每个内部数组都包含对象 我想把这个数组重新组织成一个平面数组,其顺序是按列排列的(见下文) 目前我写了以下内容: const newArray = []; arr.map((rows, i) => { rows.map((row) => { newArray.splice(i, 0, row); }); }); 但在操作过程中,订单开始出错 (注意,我在节点内部使用Promise库,因此将贴图视为法线贴图) 电流阵列 期望数组 第

我使用的是一个数组数组,每个内部数组都包含对象

我想把这个数组重新组织成一个平面数组,其顺序是按列排列的(见下文)

目前我写了以下内容:

const newArray = [];

arr.map((rows, i) => {
  rows.map((row) => {
     newArray.splice(i, 0, row);
    });
  });
但在操作过程中,订单开始出错

(注意,我在节点内部使用Promise库,因此将贴图视为法线贴图)

电流阵列 期望数组
第一步:将对象数组合并到对象数组:

var merged = [].concat.apply([], arr);
第二步:按
Mapped\u索引对对象进行排序

function compare( a, b ) {
    if ( a.Mapped_Index < b.Mapped_Index ){
        return -1;
    }
    if ( a.Mapped_Index > b.Mapped_Index ){
        return 1;
    }
    return 0;
}

merged.sort(compare);
功能比较(a、b){
if(a.映射索引b.映射索引){
返回1;
}
返回0;
}
合并。排序(比较);
第三步是按字段名排序,这有点棘手。

看起来您想转置原始矩阵,然后将其展平:

let result = arr[0].flatMap((_, i) => arr.map(row => row[i]));

在这里使用承诺有什么意义?这只是一个较大代码库的一小部分,忽略映射@georgthanks@trincotThank你,我没有经常使用
flatMap()
,所以这很好
function compare( a, b ) {
    if ( a.Mapped_Index < b.Mapped_Index ){
        return -1;
    }
    if ( a.Mapped_Index > b.Mapped_Index ){
        return 1;
    }
    return 0;
}

merged.sort(compare);
let result = arr[0].flatMap((_, i) => arr.map(row => row[i]));