配列メニュー【要素数の出力・行数の出力・列数の出力・二次元配列の入力・ i番目の出力 ほか】
Task
【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
配列 を要素として持つ 配列だから 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(' '));
2次元配列の要素を一行ずつ出力…。色々ありますけど スプレット構文 で展開する方法とjoin(' ')
で結合して表示する方法を 記載しました。
Task
【STEP: 3】コード
const A = [
[1, 2, 3],
[4, 5, 6],
[8, 1, 3]
];
console.log(A.length); // => 3
A の 要素数 を出力しています。
Task
【STEP: 4】コード
const A = [
[1, 2, 3, 4],
[6, 5, 4, 3],
[3, 1, 8, 1]
];
console.log(A[0].length); // => 4
A の各値の要素数が同じなので とりあえず
A[0]
の 要素数を出力しました。【STEP: 5】コード
const A = [
[1],
[2, 3],
[4, 5, 6]
];
A.forEach(a => {
console.log(a.length);
});
A の各値の要素数が異なるので forEach()
で各値の要素数を出力しました。
【STEP: 6】コード
const A = [
[1, 2, 3],
[8, 1, 3],
[10, 100, 1]
];
console.log(A[1][2]); // 2 行目 3 列目の要素を出力 => 3
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(' '));
【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(' ')); // 各行を連結して出力
});
});
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(' '));
});
});
【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(' '));
});
});
受け取った 行数 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]);
});
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]);
});
配列 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]);
});
行単位で 要素を受け取ったので 各行の要素数 M は使いませんでした。
コメント