Tối ưu hóa chuyển đổi thành mảng trong JavaScript
Không phải lúc nào cũng cần tách một chuỗi thành mảng để làm gì đó với nó. Hãy xem một ví dụ. Giả sử chúng ta có đoạn mã sau:
let num = 123456789;
let arr = String(num).split('');
let sum = 0;
for (let elem of arr) {
sum += +elem;
}
console.log(sum);
Tại sao việc tách thành mảng ở đây lại không tốt? Bởi vì, thứ nhất, việc tách thành mảng tiêu tốn tài nguyên CPU, thứ hai, mảng thu được sẽ chiếm chỗ trong bộ nhớ RAM (và dung lượng đó sẽ lớn hơn chỗ mà chính chuỗi đó chiếm).
Trong khi thực tế với for-of
chúng ta có thể lặp không chỉ qua mảng,
mà còn qua cả chuỗi:
let num = 123456789;
let str = String(num);
let sum = 0;
for (let char of str) {
sum += +char;
}
console.log(sum);
Đoạn mã sau tìm tổng các chữ số của số được nhập vào input. Hãy thực hiện tối ưu hóa:
<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);
});
Đoạn mã sau đếm số lượng chữ cái trong chuỗi. Hãy thực hiện tối ưu hóa:
let str = 'abcaab';
let arr = str.split('');
let i = 0;
for (let elem of arr) {
if (elem == 'a') {
i++;
}
}
console.log(i);
Đoạn mã sau kiểm tra sự hiện diện của một ký tự trong chuỗi. Hãy thực hiện tối ưu hóa:
let str = 'abcaab';
let arr = str.split('');
console.log(arr.includes('a'));