Як обробити кожну букву тексту (з орієнтирами)
https://jsperf.com/str-for-in-of-foreach-map-2
для
Класичний і, безумовно, той, що має найбільшу продуктивність . Вам слід скористатися цим, якщо ви плануєте використовувати його в алгоритмі критичної продуктивності, або якщо він вимагає максимальної сумісності з версіями браузера.
for (var i = 0; i < str.length; i++) {
console.info(str[i]);
}
за ... оф
для ... 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;
});
Нижче перелічені ті, які мені не подобаються.
за ... в
На відміну від ... of, ви отримуєте буквений індекс замість букви. Виступає досить погано.
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 посилання для мене не працює.