Python の numpy に reshape
という 1次元配列を2次元配列に変換するメソッドがある。
この変換処理と同様の処理を JavaScript で行いたかった。
ライブラリは見つけられなかったが、StackOverFLow でこの reshape
(toMatrix
と記載があった) の実装に対して記載されている。
Question があった。
以下、対象の Question に対するリンクを記載。
-
リンク
-
Array の prototype でreshapeメソッドを生やす
作っていたプログラムでは、以下のメソッドを作成して、1次元配列 から 2次元配列に変更を行うようにした。
動いたので、直す必要はないと思っているが、下記メソッドだと、自分自身をコンバートする作りなので、破壊的変更になる。
Array.prototype.reshape = function(rows, cols) {
var copy = this.slice(0); // Copy all elements.
this.length = 0; // Clear out existing array.
for (var r = 0; r < rows; r++) {
var row = [];
for (var c = 0; c < cols; c++) {
var i = r * cols + c;
if (i < copy.length) {
row.push(copy[i]);
}
}
this.push(row);
}
};
- 分割後の配列の要素数を定義して、戻り値として、2次元配列を返す
以下のメソッドであれば、破壊的な変更はなく戻り値として配列を取得できる。
slice
は、配列の一部を取り出し新しい配列として取得する関数。この時の操作は非破壊的。
function splitArray(array, part) {
var tmp = [];
for(var i = 0; i < array.length; i += part) {
tmp.push(array.slice(i, i + part));
}
return tmp;
}