For loops, array reduce and method chaining Javascript

For Циклы
const files = [ 'foo.txt ', '.bar', '   ', 'baz.foo' ];
let filePaths = [];

for (let file of files) {
  const fileName = file.trim();
  if(fileName) {
    const filePath = `~/cool_app/${fileName}`;
    filePaths.push(filePath);
  }
}

// filePaths = [ '~/cool_app/foo.txt', '~/cool_app/.bar', '~/cool_app/baz.foo']
for loop JavaScript возможности.
В настоящее время for loop  используется реже из-за большей популярности функционального программирования.
Контроль итерации, например пропуск элементов или досрочный возврат.
Результирующий массив необходимо объявить заранее, вне цикла.
Использует Array.prototype.push () или оператор (...) для добавления элементов.
O (N) сложность, каждый элемент будет повторяться только один раз.

Array reduce

const files = [ 'foo.txt ', '.bar', '   ', 'baz.foo' ];
const filePaths = files.reduce((acc, file) => {
  const fileName = file.trim();
  if(fileName) {
    const filePath = `~/cool_app/${fileName}`;
    acc.push(filePath);
  }
  return acc;
}, []);

// filePaths = [ '~/cool_app/foo.txt', '~/cool_app/.bar', '~/cool_app/baz.foo']
Используется Array.prototype.reduce() с пустым массивом.
Чаще встречается в настоящее время из-за того, что функциональное программирование стало более популярным.

Меньший контроль над итерацией, нельзя пропускать элементы или возвращаться к предыдущему элемету.
При необходимости можно связать с другими методами.
Использует Array.prototype.push () или оператор (...) для добавления элементов.
O (N) сложность, каждый элемент будет повторяться только один раз

Метод chaining

const files = [ 'foo.txt ', '.bar', '   ', 'baz.foo' ];
const filePaths = files
  .map(file => file.trim())
  .filter(Boolean)
  .map(fileName => `~/cool_app/${fileName}`);

// filePaths = [ '~/cool_app/foo.txt', '~/cool_app/.bar', '~/cool_app/baz.foo']
Использует Array.prototype.map () и Array.prototype.filter ().
Чаще встречается в настоящее время из-за того, что более популярным является функциональное программирование.
Меньший контроля над итерациеями, нельзя пропускать элементы или возвращаться на предыдущий элемент.
Декларативый метод, более удобная для чтения и рефакторинга, массив может расти по мере необходимости.
Не использует оператор Array.prototype.push () или (...).
Сложность O (cN), c итераций на элемент, (c: длина цепочки).

Ответить