Cách xử lý từng chữ cái văn bản (có điểm chuẩn)
https://jsperf.com/str-for-in-of-foreach-map-2
cho
Cổ điển và cho đến nay là một trong những hiệu suất nhất . Bạn nên sử dụng cái này nếu bạn dự định sử dụng nó trong một thuật toán quan trọng về hiệu năng hoặc nó yêu cầu khả năng tương thích tối đa với các phiên bản trình duyệt.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
cho ... của
cho ... của ES6 mới cho iterator. Được hỗ trợ bởi hầu hết các trình duyệt hiện đại. Nó trực quan hấp dẫn hơn và ít mắc lỗi đánh máy. Nếu bạn đang sử dụng ứng dụng này trong một ứng dụng sản xuất, có lẽ bạn nên sử dụng một bộ chuyển mã như Babel .
let result = '';
for (let letter of str) {
result += letter;
}
cho mỗi
Phương pháp tiếp cận chức năng . Airbnb đã được phê duyệt . Nhược điểm lớn nhất của việc làm theo cách này là split()
, tạo ra một mảng mới để lưu trữ từng chữ cái riêng lẻ của chuỗi.
Tại sao? Điều này thực thi quy tắc bất di bất dịch của chúng tôi. Xử lý các hàm thuần túy trả về các giá trị dễ lý do hơn các tác dụng phụ.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
hoặc là
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Sau đây là những cái tôi không thích.
tại
Không giống như ... của, bạn có được chỉ mục chữ cái thay vì chữ cái. Nó thực hiện khá tệ.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
bản đồ
Phương pháp chức năng, đó là tốt. Tuy nhiên, bản đồ không có nghĩa là được sử dụng cho điều đó. Nó nên được sử dụng khi cần thay đổi các giá trị bên trong một mảng, đây không phải là trường hợp.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
hoặc là
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
. Nhiều hơn thế nữa dưới đây trong một câu trả lời khá chi tiết nhưng không đủ nâng cao. PS: Liên kết của @ ARJUN không hoạt động với tôi.