Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

正方行列JavaScriptの要素をスパイラルする


このようなリテラルの配列の2次元(必然的に正方行列)配列を取り込むJavaScript関数を作成する必要があります-

const arr = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
];

この関数は、位置(0、0)から開始して入力配列かららせん状に要素を取得し、その1次元配列を返す新しい配列を作成する必要があります。

したがって、この配列の場合、スパイラルは次のようになります-

const output = [1, 2, 3, 6, 9, 8, 7, 4, 5];

開始と終了の両方で、現在の行と現在の列を指す一時変数を作成します。

このようにして、開始行と開始列を繰り返しインクリメントし、マトリックスの中心に向かってらせん状に終了行と終了列をデクリメントすることができます。

const arr = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ];
const spiral = (arr = []) => {
   if (!arr || arr.length === 0) {
      return [];
   };
   let startRow = 0;
   let startCol = 0;
   let res = [];
   let endCol = arr[0].length - 1;
   let endRow = arr.length - 1;
   while (startRow <= endRow && startCol <= endCol) {
      for (let i = startCol; i <= endCol; i++) {
         res.push(arr[startRow][i]);
      }
      startRow++;
      for (let i = startRow; i <= endRow; i++) {
         res.push(arr[i][endCol]);
      }
      endCol--;
      if (startRow <= endRow) {
         for (let i = endCol; i >= startCol; i--) {
            res.push(arr[endRow][i]);
         }
         endRow--;
      }
      if (startCol <= endCol) {
         for (let i = endRow; i >= startRow; i--) {
            res.push(arr[i][startCol]);
         } startCol++;
      }
   }
   return res;
};
console.log(spiral(arr));

出力

そして、コンソールの出力は-

になります
[
   1, 2, 3, 6, 9,
   8, 7, 4, 5
]

  1. Javascript DOMとは何ですか?

    JavaScript Document Object Model(DOM)は、WebページのHTML要素を表現したものです。これは、コンテンツやスタイルを変更してWebページを操作するために使用できるインターフェイスです。 ウェブページを右クリックして[検査]を選択すると、DOMにアクセスできます。これを行うことにより、現在表示しているWebページのHTML要素を含むセクションが(右側または左側に)表示されます。これらの要素にカーソルを合わせると、ページ自体のセクションが強調表示されたときに、ページのどのセクションがそれらによって表されているかを確認できます。 コンソールでコーディ

  2. JavaScriptを使用して同じ配列内の配列の要素を複製するにはどうすればよいですか?

    以下は、同じ配列内の配列の要素を複製するためのコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" > <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>   &nbs