การเพิ่มประสิทธิภาพการแปลงเป็นอาร์เรย์ใน JavaScript

การแยกสตริงเป็นอาร์เรย์ไม่จำเป็นเสมอไปเพื่อดำเนินการบางอย่าง มาดูตัวอย่างกัน สมมติว่าเรามีโค้ดต่อไปนี้:

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

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

console.log(sum);

ทำไมการแยกเป็นอาร์เรย์จึงไม่ดีที่นี่? เพราะ ประการแรก การแยกเป็นอาร์เรย์ใช้ทรัพยากร CPU ประการที่สอง อาร์เรย์ที่ได้ จะใช้พื้นที่ในหน่วยความจำ 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'));