簡體   English   中英

如何獲取數組中的對角線值?

[英]How do I get the diagonal values in an array?

我正在嘗試編寫一個程序,該程序采用 3 行和 3 列的對角線值。

數組本身是:

[4, 2, 5] 
[1, 8, 3] 
[4, 3, 9]

...而 output 應該是:

[4, 8, 9]

或相反:

[5, 8, 4]

到目前為止我有這個:

var DIAGONAL_TOP_LEFT_BOTTOM_RIGHT = 0;
var DIAGONAL_BOTTOM_LEFT_TOP_RIGHT = 1;

function start(){
    var grid = new Grid(3, 3);
    grid.initFromArray([
    [4, 2, 5], // 0th row
    [1, 8, 3], // 1st row
    [4, 3, 9] // 2nd row]);
    var diagonal =
    }




function getDiagonal(grid, whichDiagonal){
    var diagonalList = [];
    for(var col = 0; col < grid.getCols(); col++){
        for(var row = 0; row < grid.getRows(); row++){
            println(col);
            var cur = grid.get(row,col);
            println(cur);
            }
        }
    }
}

我不太確定 go 從這里到哪里。 任何幫助表示贊賞!

你可以使用map - 第二個參數是索引,所以這個腳本在第一個數組中找到第一個值,第二個在第二個等等......

 const matrix = [ [4, 2, 5], [1, 8, 3], [4, 3, 9]]; console.log('↘️', matrix.map((a, i) => a[i])); console.log('↗️', [...matrix].reverse().map((a, i) => a[i]));

function diag()將返回任何二維矩陣的對角線:

 const arr=[[4, 2, 5], [1, 8, 3],[4, 3, 9]]; const diag=a=>a.map((v,i)=>v[i]); console.log(diag(arr));

我們首先要檢查以確保矩陣是一個完美的正方形(嵌套 arrays 的長度與每個數組的項目數相同)。

isValidMatrix() function 我添加了檢查以確保矩陣數組是有效數組,每個子數組也是與父矩陣長度相同的有效數組。

之后,我添加了兩個單獨的函數getDiag1()getDiag2() 第一個 function 將每個嵌套數組映射到其中具有與其嵌套數組相同索引的任何元素。 換句話說,它將從第一個數組中獲取第一項,從第二個中獲取第二項,依此類推。 我們這樣做: row[i]

相反,第二個 function 將從第一個數組中獲取最后一個數組項,從第二個數組中獲取倒數第二個數組項,依此類推。 我們這樣做: row[row.length-i-1]

 let matrix = [[4, 2, 5], [1, 8, 3], [4, 3, 9]]; const isValidMatrix = matrix => Array.isArray(matrix) && matrix.every(row => Array.isArray(row) && row.length === matrix.length) const getDiag1 = matrix => isValidMatrix(matrix) && matrix.map((row,i) => row[i]); const getDiag2 = matrix => isValidMatrix(matrix) && matrix.map((row,i) => row[row.length-i-1]); console.log(getDiag1(matrix), getDiag2(matrix));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM