如何将矩阵转换为只有一行的数组

时间:2018-10-10 13:23:57

标签: javascript

考虑矩阵B= [[6,4,1,2], [5,3,9,7],[1,3,2,1]];。 B是具有三行四列的矩阵。我想将其视为数组或向量,即B1=[6,4,1,2,5,3,9,7,1,3,2,1]。此外,例如,我想拥有B1[3]=2-因此它是一个数字,不再是矢量。我写了一个简单的函数

function NewArray(Matrix){
var Temp = [];
var w = Matrix[0].length;
var h = Matrix.length;
for (i=0; i<w; i++){
    for (j=0; j<h; j++){
        Temp.push(Matrix[i][j]);
        }
    }
    return Temp;

}

仅当B为二次方时,它才起作用。怎么了?

3 个答案:

答案 0 :(得分:4)

您可以使用applyconcat方法来编写简化的解决方案。

B = [[6,4,1,2], [5,3,9,7],[1,3,2,1]]
B1 = [].concat.apply([], B);
console.log(B1);

另一种方法是使用spread syntax

B = [[6,4,1,2], [5,3,9,7],[1,3,2,1]]
B1 = [].concat(...B);
console.log(B1);

答案 1 :(得分:2)

您可以使用嵌套数组的长度,而不是预先定义的值。

function newArray(matrix) {
    var temp = [],
        i, j, h, w;
    for (i = 0, h = matrix.length; i < h; i++) {
        for (j = 0, w = matrix[i].length; j < w; j++) {
            temp.push(matrix[i][j]);
        }
    }
    return temp;
}

console.log(newArray([[6, 4, 1, 2], [5, 3, 9, 7], [1, 3, 2, 1]]));
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:0)

将forEach用于数组:)

      execute_process(
        COMMAND git rev-parse --abbrev-ref HEAD
        WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
        OUTPUT_VARIABLE GIT_BRANCH
        OUTPUT_STRIP_TRAILING_WHITESPACE
      )

    message(STATUS "Git current branch: ${GIT_BRANCH}")
    add_definitions(-DGIT_BRANCH=${GIT_BRANCH})