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: длина цепочки).
+1
+1
+1
+1
+1