Как обрабатывать каждую букву текста (с тестами)
https://jsperf.com/str-for-in-of-foreach-map-2
за
Классический и, безусловно, самый эффективный . Вы должны пойти с этим, если вы планируете использовать его в алгоритме, критичном к производительности, или если он требует максимальной совместимости с версиями браузера.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
для ... из
for ... of - это новый ES6 для итератора. Поддерживается большинством современных браузеров. Это визуально более привлекательно и менее склонно к опечаткам. Если вы собираетесь использовать его в производственном приложении, вы, вероятно, должны использовать транспортер, такой как Babel .
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) { ... }
. Более подробно об этом ниже в довольно подробном, но недостаточно голосуемом ответе. PS: ссылка @ ARJUN не работает для меня.