การเพิ่มประสิทธิภาพการแปลงเป็นอาร์เรย์ใน JavaScript
การแยกสตริงเป็นอาร์เรย์ไม่จำเป็นเสมอไปเพื่อดำเนินการบางอย่าง มาดูตัวอย่างกัน สมมติว่าเรามีโค้ดต่อไปนี้:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
ทำไมการแยกเป็นอาร์เรย์จึงไม่ดีที่นี่? เพราะ ประการแรก การแยกเป็นอาร์เรย์ใช้ทรัพยากร CPU ประการที่สอง อาร์เรย์ที่ได้ จะใช้พื้นที่ในหน่วยความจำ RAM (และพื้นที่นั้น จะมากกว่าพื้นที่ที่สตริงต้นฉบับใช้)
และที่จริงแล้ว ด้วย for-of
คุณสามารถวนลูปได้ไม่เพียงแต่กับอาร์เรย์
แต่ยังรวมถึงสตริงด้วย:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
โค้ดต่อไปนี้ค้นหาผลรวมของตัวเลขในตัวเลขที่ป้อน ในอินพุต ดำเนินการเพิ่มประสิทธิภาพ:
<input>
let 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);
});
โค้ดต่อไปนี้นับจำนวน ตัวอักษรในสตริง ดำเนินการเพิ่มประสิทธิภาพ:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
โค้ดต่อไปนี้ตรวจสอบการมีอยู่ของสัญลักษณ์ ในสตริง ดำเนินการเพิ่มประสิทธิภาพ:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));