Skip to content

Instantly share code, notes, and snippets.

@kemsakurai
Last active June 4, 2021 21:42
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kemsakurai/2adc88292482a69690e128000c8afedb to your computer and use it in GitHub Desktop.
Save kemsakurai/2adc88292482a69690e128000c8afedb to your computer and use it in GitHub Desktop.
JavaScript 1次元配列を2次元配列に変換する

Python の numpy に reshape という 1次元配列を2次元配列に変換するメソッドがある。
この変換処理と同様の処理を JavaScript で行いたかった。
ライブラリは見つけられなかったが、StackOverFLow でこの reshape (toMatrix と記載があった) の実装に対して記載されている。
Question があった。
以下、対象の Question に対するリンクを記載。

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;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment