JavaScriptでの配列変換の最適化

文字列を処理するために、常に配列に分割する必要はありません。 例を見てみましょう。 次のコードがあるとします:

javascriptlet num = 123456789;
let arr = String(num).split('');
let sum = 0;

for (let elem of arr) {
  sum += +elem;
}

console.log(sum);

なぜここで配列に分割するのは良くないのでしょうか?なぜなら、 第一に、配列への分割はプロセッサリソースを消費し、 第二に、生成された配列はRAM内のスペースを占有するからです(しかも、 それは元の文字列が占めるスペースよりも大きくなります)。

しかし実際には、for-of ループは配列だけでなく、文字列も反復処理できます:

javascriptlet num = 123456789;
let str = String(num);
let sum = 0;

for (let char of str) {
  sum += +char;
}

console.log(sum);
Задание 1

次のコードは、入力欄に入力された数字の各桁の合計を求めます。 最適化を実行してください:

html<input>
javascriptlet input = document.querySelector('input');

input.addEventListener('blur', function() {
  let digits = input.value.split('');
  let sum = 0;
  
  for (let digit of digits) {
    sum += +digit;
  }
  
  console.log(sum);
});
Задание 2

次のコードは、文字列内の文字の数を数えます。 最適化を実行してください:

javascriptlet str = 'abcaab';
let arr = str.split('');

let i = 0;

for (let elem of arr) {
  if (elem == 'a') {
    i++;
  }
}

console.log(i);
Задание 3

次のコードは、文字列内に特定の文字が存在するかチェックします。 最適化を実行してください:

javascriptlet str = 'abcaab';
let arr = str.split('');

console.log(arr.includes('a'));