特定の文字で区切り 1 行で出力

標準出力メニュー【カンマ区切りで10個出力・半角スペースとバーティカルライン区切りで10個出力・大きな数値を3けたごとにカンマ区切りで出力 ほか】

【STEP: 1】コード

reader.on('close', () => {
   const [M, N] = lines[0].split(' ').map(Number);
   console.log([M, N].join(','));
});
hogeちゃんの画像

join(',')を使って 2つの配列の要素を″,″で結合。

【STEP: 2】コード

reader.on('close', () => {
   const S = [];  // 3 つの入力値を受け取る配列
   for (let i = 0; i < 3; i++) {
      S.push(lines[i]);  // S に入力値を保存
      }
   console.log(S.join('|'));  // 配列の値を'|'で結合
});
hogeちゃんの画像

改行区切りの入力値を for文 を使って S に保存。出力時に join('|') で結合しています。

【STEP: 3】コード

reader.on('close', () => {
   const N = lines[0].split(' ').map(Number);
   console.log(N.join(',') + ',');
});
hogeちゃんの画像

split(' ').map(Number) で 入力値を半角スペース区切りの数値の配列に変換。末尾にも″,″が必要なので 出力時に + 演算子で追加しました。 (^^;

【STEP: 4】コード (1)

reader.on('close', () => {
   const N = lines[0].split(' ').map(Number);
   console.log(N.join(','));
});
hogeちゃんの画像

【STEP: 3】とほぼ同じです。出力時の + ','を削っただけ。

【STEP: 5】コード

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

入力をNに保存し 出力時にjoin(' | ')で結合。

【STEP: 6】コード

reader.on('close', () => {
   const N = lines[0];
   const M = [];  // 3桁毎の値を保存する配列
   for (let i = 0; i < N.length - 2; i += 3) {
      M.push(N.substring(i, i + 3));  // 値を 3桁 ずつ切り取り M に保存
   }
   console.log(M.join(','));
});
hogeちゃんの画像

カウンタ変数  i が 3 ずつ増加する for文 で値を3桁ずつ抜き出して M に保存。出力時に join(',') で連結。

【FINAL】コード

reader.on('close', () => {
   const N = lines[0];
   const M = [];  // 3桁毎の値を保存する配列
   const R = N.length % 3;  // 3桁区切りの端数
   if(R) {  // 端数が 1 または 2 なら…
      M.push(N.substring(0, R));  // 数列の先頭から 端数分 抜き出して M に保存
   }
   for (let i = 0 + R; i < N.length - 2; i +=3) {
      M.push(N.substring(i, i + 3));
   }
   console.log(M.join(','));
});
hogeちゃんの画像

桁数を3で割った余りが 1 または 2 であれば 先ず 先頭から 端数分(R個)の値を抜き出し M に保存。ループは 0 + R から開始すればうまくいきました。

コメント