JavaScript - как заменить пробелы во всем массиве - PullRequest
0 голосов
/ 06 марта 2019

У меня есть массив небольших строк, но я получил эти данные из-за пределов программы, поэтому я не знаю, как эти данные отформатированы. В частности, я сталкиваюсь с множеством ситуаций, когда у меня есть посторонние пробелы до и после каждой строки.

Проблема в том, что у меня большой массив. Хотя я мог сделать что-то вроде этого:

for (var z = 0; z < myArray.length; z++) {
  myArray[z] = myArray[z].replace(/(^\s+|\s+$)/g,'');
}

или

myArray.forEach(function(part, index) {
  this[index] = this[index].replace(/(^\s+|\s+$)/g,'');
}, myArray);

Мне интересно, что было бы лучше, или это в значительной степени лучше? Есть ли пакетная функция для этого?

1 Ответ

2 голосов
/ 06 марта 2019

Два предложения:

  • Вместо replace в любом даже смутно современном браузере я бы использовал trim, который удаляет пробелы в начале и конце строки. trim было добавлено в ES5 (2009).
  • Если массив не состоит из миллионов записей, я бы, вероятно, использовал map, но ваш цикл for в порядке. map создает новый массив на основе результата функции обратного вызова.

Вот оба предложения вместе:

myArray = myArray.map(str => str.trim());
// or ES5:
myArray = myArray.map(function(str) { return str.trim(); });

Но если вы не хотите создавать новый массив, ваш for с trim вполне подойдет, хотя вы можете кэшировать myArray.length, чтобы избежать повторного получения его на каждой итерации:

for (var i = 0, len = myArray.length; i < len; ++i) {
    myArray[i] = myArray[i].trim();
}

(Я бы, вероятно, использовал let вместо var, если вы ориентируетесь на современную среду, поэтому i и len являются локальными для цикла. Современные движки теперь так хорошо оптимизируют, где они не делали ' т всегда рано.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...