配列メニュー【配列の書き換え・要素の入れ替え・連結・ソート・反転・要素のカウント・追加・削除・挿入・出力・ ほか】
【STEP: 1】コード
reader.on('close', () => {
const [A, B, N] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
for (let i = 0; i < N; i++) {
switch (a[i]) { // a[i]が…
case A: // A だったら…
a[i] = B; // a[i]を B で上書きしてね
break;
}
console.log(a[i]);
}
});
for文で ループしながら a[i] を出力していますが 出力する前に switch文 で a[i] が A だった場合は B で上書きする処理を行っています。
【STEP: 2】コード
reader.on('close', () => {
let [A, B] = lines[0].split(' ').map(Number);
[A, B] = [B, A]; // 値の交換
console.log(A, B);
});
変数を配列に格納すれば 順序を入れ替えるだけで値の入れ替えができました。
【STEP: 3】コード
reader.on('close', () => {
const [A, B, N] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
[a[A - 1], a[B - 1]] = [a[B - 1], a[A - 1]]; // 配列の値の交換
a.forEach(value => {
console.log(value);
});
});
【STEP: 2】の応用ですね。A 番目と B 番目の入れ替えも index を入れ替えれば OKでした。
【STEP: 4】コード
reader.on('close', () => {
const [A, B, N] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
const b = a.slice(A - 1, B); // slice(開始位置,終了位置+1)
b.forEach(value => {
console.log(value);
});
});
a.slice(A - 1, B)
で a の A 番目〜B 番目の 新配列 が生成されました。【STEP: 5】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
const b = lines[2].split(' ').map(Number);
const c = [a, b].flat(); // 2次元配列をフラット化
// const c = [...a, ...b]; // スプレット構文で展開してから連結
c.forEach(value => {
console.log(value);
});
});
[a, b].flat()
を[...a, ...b]
に変えても 実行結果は同じでした。
【STEP: 6】コード
reader.on('close', () => {
const N = Number(lines[0]);
const a = lines[1].split(' ').map(Number);
a.sort((s, b) => s - b); // 配列を数値の小さい順にソート
a.forEach(value => {
console.log(value);
});
});
sort((s, b) => s - b)
で 数値の小さい順に並び替わりました。
【STEP: 7】コード
reader.on('close', () => {
const N = Number(lines[0]);
const a = lines[1].split(' ').map(Number);
a.reverse(); // 逆順ソート
a.forEach(value => {
console.log(value);
});
});
逆順への並べ替えは reverse()
を実行すれば OK でした。
【STEP: 8】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
let ans = 0; // 出力値を 0 で初期化
for (let i = 0; i < N; i++) {
if (a[i] === M) { // a[i] が M と同じなら
ans++; // ans を加算
}
}
console.log(ans);
});
for文 で値を一つ一つ調べ M と同じなら ans を加算しています。
N 個の整数の末尾に整数 M を挿入して 改行区切りで出力してね。
【STEP: 9】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
a.push(M); // 末尾に追加
for (let i = 0; i <= N; i++) {
console.log(a[i]);
}
});
a.push(M)
で a の末尾に M を追加しました。
【STEP: 10】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
let ans = 0;
a.splice(M - 1, 1); // M 番目から開始して 要素を 1 つ 削除
a.forEach(value => {
console.log(value);
});
});
splice()
の引数が第2引数までの場合splice(開始位置, 削除数)
でしたね。
【STEP: 11】コード
reader.on('close', () => {
const [N, M, K] = lines[0].split(' ').map(Number);
const a = lines[1].split(' ').map(Number);
a.splice(M - 1, 0, K); // 削除数が 0個で 追加する要素が K
a.forEach(value => {
console.log(value);
});
});
splice()
に第3引数がある場合 splice(開始位置, 削除数, 追加する要素)
。
【STEP: 12】コード
const S =['Hello','paiza','1234','pa13'];
console.log(S.length);
length
で要素数を取得することができました。
【STEP: 13】コード
const S = ['good','morning','paiza','813','pa13'];
S.forEach(s =>{
console.log(s);
});
forEach()
で 全要素にアクセスしています。
【STEP: 14】コード
const S = ['good', 'morning', 'paiza', '813', 'pa13'];
console.log(S[2]);
S[2]
で S の 3番目が取得できました。【STEP: 15】コード
const S = ['eight', 'one', 'three', 'paiza', 'pa13', '813'];
S.forEach(s => {
console.log(s);
});
文字列の配列 S の値をforEach()
で出力しました。
【STEP: 16】コード
reader.on('close', () => {
const S = lines[0].split(' ');
S.forEach(s => {
console.log(s);
});
});
入力を半角スペース区切りの配列に変換して S で受け取り forEach()
で出力しています。
【STEP: 17】コード
reader.on('close', () => {
const N = Number(lines[0]);
const S = lines[1].split(' ');
for (let i = 0; i < N; i++) {
console.log(S[i]);
}
});
入力を半角スペース区切りの配列に変換して S で受け取り for文で出力しています。
【STEP: 18】コード
reader.on('close', () => {
const N = lines[0] - 1; // index は 0 から始まるので -1
const S = ['good', 'morning', 'paiza', '813', 'pa13']; // 文字列を配列に格納
console.log(S[N]);
});
文字列を引き算すると 答えは数値になります。
【STEP: 19】コード
reader.on('close', () => {
const N = lines[0] - 1; // index は 0 から始まるので -1
const S = lines[1].split(' ');
console.log(S[N]);
});
文字列を S で受け取って S[N]
を出力。
【STEP: 20】コード
reader.on('close', () => {
const [N, M] = lines[0].split(' ');
const S = lines[1].split(' ');
console.log(S[N - 1]); // index は 0 から始まるので -1
});
こちらのコードは 出力時に N から 1 減算しています。
【STEP: 21】コード
reader.on('close', () => {
const [N, M, L] = lines[0].split(' ');
const S = lines[1].split(' ');
console.log(S[N - 1][L - 1]);
});
S[N – 1] の更に [L – 1] 番目の文字を指定。2次元配列の要素の取得と同じ書き方ですね。
【STEP: 22】コード
const S = ['zaipa', 'izapa', 'paiza'].sort(); // 配列を辞書順に並べ替え
S.forEach(s=>{
console.log(s);
});
sort()
で文字列を辞書順に並べ替えました。
【STEP: 23】コード
reader.on('close', () => {
const S = lines[0].split(' ').sort(); // 入力を辞書順に並べ替え
S.forEach(s => {
console.log(s);
});
});
入力を半角スペース区切りの配列に変換して S で受け取り辞書順に並べ替え for文で出力しています。
【STEP: 24】コード
const N = Number(lines[0]);
const S = lines[1].split(' ').sort();
for (let i = 0; i < N; i++) {
console.log(S[i]);
}
});
forEach()
でしたが こちらは for文 で出力しました。【FINAL】コード
reader.on('close', () => {
const [N, K] = lines[0].split(' ');
const S = lines[1].split(' ').sort(); // (' ')区切りの配列に変換して辞書順ソート
console.log(S[K - 1]); // K 番目を出力
});
入力を半角スペース区切りの配列に変換して 更に辞書順に並べ替え S で受け取り K 番目を出力。
コメント