วิธีการประมวลผลตัวอักษรแต่ละตัว (พร้อมการวัดประสิทธิภาพ)
https://jsperf.com/str-for-in-of-foreach-map-2
สำหรับ
คลาสสิกและไกลโดยเป็นหนึ่งเดียวกับที่ประสิทธิภาพมากที่สุด คุณควรไปกับสิ่งนี้หากคุณวางแผนที่จะใช้มันในอัลกอริทึมที่สำคัญด้านประสิทธิภาพหรือต้องใช้ความเข้ากันได้สูงสุดกับเวอร์ชันเบราว์เซอร์
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
สำหรับ ... ของ
สำหรับ ... ของคือES6ใหม่สำหรับตัววนซ้ำ สนับสนุนโดยเบราว์เซอร์ที่ทันสมัยที่สุด มันดึงดูดสายตามากขึ้นและมีแนวโน้มที่จะพิมพ์ผิดพลาดน้อยลง หากคุณกำลังจะสำหรับการนี้ในการประยุกต์ใช้การผลิตที่คุณควรจะใช้อาจ transpiler เหมือนบาเบล
let result = '';
for (let letter of str) {
result += letter;
}
แต่ละ
ฟังก์ชั่นวิธีการ Airbnb อนุมัติแล้ว ข้อเสียที่ใหญ่ที่สุดของการทำเช่นนี้คือการsplit()
ที่สร้างอาร์เรย์ใหม่เพื่อจัดเก็บตัวอักษรแต่ละตัวของสตริง
ทำไม? สิ่งนี้บังคับใช้กฎที่ไม่เปลี่ยนรูปแบบของเรา การจัดการกับฟังก์ชั่นแท้ที่ให้ผลตอบแทนนั้นง่ายกว่าที่จะให้เหตุผลมากกว่าผลข้างเคียง
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
หรือ
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
ต่อไปนี้เป็นสิ่งที่ฉันไม่ชอบ
สำหรับใน
ต่างจากสำหรับ ... ของคุณได้รับดัชนีตัวอักษรแทนตัวอักษร มันทำงานได้ค่อนข้างแย่
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
แผนที่
วิธีการใช้ฟังก์ชั่นซึ่งดี อย่างไรก็ตามแผนที่ไม่ได้มีไว้ให้ใช้สำหรับสิ่งนั้น ควรใช้เมื่อต้องการเปลี่ยนค่าภายในอาเรย์ซึ่งไม่ใช่กรณี
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
หรือ
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
มี เพิ่มเติมจากด้านล่างนี้ในคำตอบที่ค่อนข้างละเอียด แต่ไม่ upvoted อย่างเพียงพอ PS: @ ลิงก์ของ ARJUN นั้นใช้งานไม่ได้สำหรับฉัน