二次元配列の入出力

配列メニュー【要素数の出力・行数の出力・列数の出力・二次元配列の入力・ i番目の出力 ほか】

【STEP: 1】コード

const A = [
   [1, 2, 3, 4, 5, 6],
   [8, 1, 3, 3, 1, 8]
   ];
console.log(A[0].length + A[1].length);  // => 12
hogeちゃんの画像

配列 を要素として持つ 配列だから 2次元配列…。A.length は 2 で A[0].length + A[1].length は 6 + 6 で12 になりました。

【STEP: 2】コード

const A = [
   [6, 5, 4, 3, 2, 1],
   [3, 1, 8, 8, 1, 3]
   ];
// スプレット構文で展開して出力
console.log(...A[0]);
console.log(...A[1]);
// 各行を join(' ') で連結して出力
console.log(A[0].join(' '));
console.log(A[1].join(' '));
hogeちゃんの画像

2次元配列の要素を一行ずつ出力…。色々ありますけど スプレット構文 で展開する方法とjoin(' ') で結合して表示する方法を 記載しました。

【STEP: 3】コード

const A = [
   [1, 2, 3],
   [4, 5, 6],
   [8, 1, 3]
];
console.log(A.length);  // => 3
hogeちゃんの画像

A の 要素数 を出力しています。

【STEP: 4】コード

const A = [
   [1, 2, 3, 4],
   [6, 5, 4, 3],
   [3, 1, 8, 1]
];
console.log(A[0].length);  // => 4
hogeちゃんの画像
A の各値の要素数が同じなので とりあえずA[0] の 要素数を出力しました。

【STEP: 5】コード

const A = [
   [1],
   [2, 3],
   [4, 5, 6]
];
A.forEach(a => {
   console.log(a.length);
});
hogeちゃんの画像

A の各値の要素数が異なるので forEach()で各値の要素数を出力しました。

【STEP: 6】コード

const A = [
   [1, 2, 3],
   [8, 1, 3],
   [10, 100, 1]
];
console.log(A[1][2]);  // 2 行目 3 列目の要素を出力 => 3
hogeちゃんの画像

A[1][2]赤字の部分が出力できました。

【STEP: 7】コード

const A = [
   [1, 3, 5, 7],
   [8, 1, 3, 8]
];
// スプレット構文で展開して出力
console.log(...A[0]);
console.log(...A[1]);
// 各行を join(' ') で連結して出力
console.log(A[0].join(' '));
console.log(A[1].join(' '));
hogeちゃんの画像

【STEP: 2】と同様。スプレット構文 で展開する方法と  join(‘ ‘) で結合して表示する方法を 記載しました。

【STEP: 8】コード

reader.on('close', () => {
   const M = Number(lines[0]);
   const A = [];
   for (let i = 1; i <= 5; i++) {
       A.push(lines[i].split(' ').map(Number));  // 一行ずつ配列化して A に保存
    }
   A.forEach(a => {
      console.log(a.join(' '));  // 各行を連結して出力
   });
});
hogeちゃんの画像

for文 で 5行の配列を A に保存。forEach()で各行を出力しました。行単位で値を受け取れるので 列数の M は使いませんでした。

【STEP: 9】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = [];
   for (let i = 1; i <= N; i++) { 
      A.push(lines[i].split(' ').map(Number)); 
   } 
   A.forEach(a => {
      console.log(a.join(' '));
   });
});
hogeちゃんの画像

【STEP: 8】の行数が 5 から N になった以外は同じコードです。

【STEP: 10】コード

reader.on('close', () => {
   const [N, M]=lines[0].split(' ').map(Number);
   const A = [];
   for (let i = 1; i <= N; i++) {
      A.push(lines[i].split(' ').map(Number));
   }
   A.forEach(a => {
      console.log(a.join(' '));
   });
});
hogeちゃんの画像

受け取った 行数 N と列数 M のうち N のみ for文 内で使用しています。

【STEP: 11】コード

reader.on('close', () => {
   const [K, L] = lines[0].split(' ').map(Number);
   const A = [
      [1, 2, 3, 4],
      [10, 100, 0, 5],
      [8, 1, 3, 8],
      [15, 34, 94, 25]
   ];
   console.log(A[K - 1][L - 1]);
});
hogeちゃんの画像

K 行目は[K - 1] L列目は[L - 1]

【STEP: 12】コード

reader.on('close', () => {
   const [K, L] = lines[0].split(' ').map(Number);
   const A = [];  // 3 行 3 列の二次元配列
   for (let i = 1; i <= 3; i++) {
      A.push(lines[i].split(' ').map(Number));
   }
   console.log(A[K - 1][L - 1]);
});
hogeちゃんの画像

配列 A に 3 行の 入力値を保存して2次元配列を生成しています。

【FINAL】コード

reader.on('close', () => {
   const [N, M, K, L] = lines[0].split(' ').map(Number);
   const A = [];
   for (let i = 1; i <= N; i++) {
      A.push(lines[i].split(' ').map(Number));
   }
   console.log(A[K - 1][L - 1]);
});
hogeちゃんの画像

行単位で 要素を受け取ったので 各行の要素数 M は使いませんでした。

コメント