0

正確に 81 個の要素を含むインデックス付き JavaScript 配列があります。これらの要素は 9x9 グリッド (数独に似ています) を作成しますが、今のところ、その配列から行と列の値を効率的に取得する方法を見つける必要があります。

たとえば、関数getRow(2)は、81 要素の配列の 2 行目に配置された 9 つの値のインデックス付き配列を返す必要があり、getColumn(2)類推して機能する必要があります。

現在、私のgetRow()関数は次のようになっています。

function getRow(rowId){

    // Indexes for every row in the 81-element array
    var rowIndexes = {
        1: [0,1,2,3,4,5,6,7,8],
        2: [9,10,11,12,13,14,15,16,17],
        3: [18,19,20,21,22,23,24,25,26],
        4: [27,28,29,30,31,32,33,34,35],
        5: [36,37,38,39,40,41,42,43,44],
        6: [45,46,47,48,49,50,51,52,53],
        7: [54,55,56,57,58,59,60,61,62],
        8: [63,64,65,66,67,68,69,70,71],
        9: [72,73,74,75,76,77,78,79,80]
    };

    // New array for row values
    var rowValues = new Array();

    for(var i=0; i < 9; i++){
        // Getting row value from 81-element array
        rowValues.push(GRID_ARRAY[rowIndexes[rowId][i]]);
    }

    return rowValues;

}

では、指定された行/列 ID に従って行と列の値の両方を計算する、より動的で最適な方法はありますか?

ありがとう!

4

3 に答える 3

1

rowとが両方とも 0 から 8 の間であると仮定するとcolumn、式を使用してインデックスを直接計算できます。

index = row * 9 + column
于 2013-05-07T10:51:48.343 に答える
0

getColumn(colId) に対して同じことを行います。

for(var i=0; i < 9; i++){
    // Getting column value from 81-element array
    colValues.push(GRID_ARRAY[rowIndexes[i][colId]]);
}
return colValues;
于 2013-05-07T10:55:37.620 に答える