Cara memproses setiap huruf teks (dengan tolok ukur)
https://jsperf.com/str-for-in-of-foreach-map-2
untuk
Klasik dan sejauh ini yang paling berkinerja . Anda harus menggunakan yang ini jika Anda berencana menggunakannya dalam algoritme kinerja kritis, atau yang memerlukan kompatibilitas maksimum dengan versi browser.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
untuk ... dari
untuk ... dari adalah ES6 baru untuk iterator. Didukung oleh sebagian besar browser modern. Ini secara visual lebih menarik dan kurang rentan terhadap kesalahan pengetikan. Jika Anda ingin yang ini dalam aplikasi produksi, Anda mungkin harus menggunakan transpiler seperti Babel .
let result = '';
for (let letter of str) {
result += letter;
}
untuk setiap
Pendekatan fungsional . Airbnb disetujui . Kelemahan terbesar dari melakukannya dengan cara ini adalah split()
, yang menciptakan array baru untuk menyimpan setiap huruf dari string.
Mengapa? Ini menegakkan aturan abadi kita. Berurusan dengan fungsi murni yang mengembalikan nilai lebih mudah untuk dipertimbangkan daripada efek samping.
// ES6 version.
let result = '';
str.split('').forEach(letter => {
result += letter;
});
atau
var result = '';
str.split('').forEach(function(letter) {
result += letter;
});
Berikut ini adalah yang saya sukai.
untuk ... di
Tidak seperti untuk ... dari, Anda mendapatkan indeks surat daripada surat itu. Itu berkinerja sangat buruk.
var result = '';
for (var letterIndex in str) {
result += str[letterIndex];
}
peta
Pendekatan fungsi, mana yang baik. Namun, peta tidak dimaksudkan untuk digunakan untuk itu. Ini harus digunakan ketika perlu mengubah nilai-nilai di dalam array, yang tidak terjadi.
// ES6 version.
var result = '';
str.split('').map(letter => {
result += letter;
});
atau
let result = '';
str.split('').map(function(letter) {
result += letter;
});
for(const c of str) { ... }
. Lebih dari itu lebih jauh di bawah ini dalam jawaban yang cukup terperinci tetapi tidak cukup terangkat. PS: @ Tautan ARJUN tidak berfungsi untuk saya.