配列を参照する操作

配列活用メニュー【指定の要素のカウント・全ての要素の和・配列の最大値・最小値・全ての要素に対する操作 ほか】

【STEP: 1】コード

reader.on('close', () => {
   const [N, K] = lines[0].split(' ').map(Number);
   const A = [];
   let ans = 0;  // K の数 0 で初期化
   for (let i = 1; i <= N; i++) {
      A.push(Number(lines[i]));  // A に入力値を保存
   }
   for (let i = 0; i < N; i++) {
      if (A[i] === K) {  // A[i] が K と一致すれば…
         ans++;  // ans を加算
      }
   }
   console.log(ans);
});
hogeちゃんの画像

ans を 0 で初期化。if文 で条件分岐して K と一致すれば ans を加算。

【STEP: 2】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = [];
   for (let i = 1; i <= N; i++) { 
      A.push(Number(lines[i])); 
   } 
   const total = A.reduce((a, c) => a + c);  // 要素を順に加算した最後の処理結果
   console.log(total);
});
hogeちゃんの画像

reduce((a, c) => a + c)a はアキュムレータの値を保存…。詳しくは MDN Plus 様の解説をご参照下さい。

【STEP: 3】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = [];
   for (let i = 1; i <= N; i++) {
      A.push(Number(lines[i]));
   }
   console.log(Math.max(...A));  // 配列をスプレット構文で展開した値の最大値を抽出
});
hogeちゃんの画像

配列 A の値を展開し Math.max()で最大値を抽出。

【STEP: 4】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const A = [];
   for (let i = 1; i <= N; i++) { 
      A.push(Number(lines[i])); 
   } 
   console.log(Math.min(...A));  // 配列をスプレット構文で展開した値の最小値を抽出
});
hogeちゃんの画像
Math.min()で最小値を抽出。

【STEP: 5】コード

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

includes()AK が含まれるかどうか調べて 三項条件演算子で出力値を制御しています。

【STEP: 6】コード

reader.on('close', () => {
   const [N, K] = lines[0].split(' ').map(Number);
   const A = [-1];  // A[0] の値は 0 ≦ K なので 負の数なら何でも良い
   for (let i = 1; i <= N; i++) {
      A.push(Number(lines[i]));
   }
   console.log(A.indexOf(K));
});
hogeちゃんの画像

A.indexOf(K)K のindex が 返されますが index は 0 から始まるので あらかじめ A[0] に K の 値の 条件の範囲外の値 を代入しています。K が含まれない場合はの戻り値は -1 なので 指示通り出力できました。

【STEP: 7】コード

reader.on('close', () => {
   const N = Number(lines[0]);
   const S = new Set();  // Setは同じ値を要素として持つことができない
   for (let i = 1; i <= N; i++) {
      S.add(Number(lines[i]));  // Set.add(値)で要素を追加(同じ値が既存すれば追加できない)
   }
   const A = [...S];  // S の値を 配列 A の要素として 展開
   console.log(A.length);  // A の要素数を表示
});
hogeちゃんの画像

重複を省きたいのでSet()に値を保存しましたが そのままでは要素数を取得できないので 配列 A の要素として 値を展開して要素数を取得しました。

【FINAL】コード

reader.on('close', () => {
   const [N, K] = lines[0].split(' ').map(Number);
   const A = [];
   for (let i = 1; i <= N; i++) {
      A.push(Number(lines[i]));
   } 
  // コード1 …forEach()で加算しながら出力
   A.forEach(a => {
      a += K;
      console.log(a);
   });
  // コード2 …map()で戻り値を出力
   A.map(a => {
      console.log(a + K);
   });
});
hogeちゃんの画像

コード1 …配列 A の各要素 (a) にK を加算して上書きして出力。

コード2 …map()で戻り値を出力。

コメント