Погружение в JavaScript: методы массивов и функциональное программирование

На этой неделе я изучил огромное количество методов Array. Кроме того, я познакомился с новыми концепциями, называемыми функциональным программированием, применимыми к методам массивов. Поначалу это меня очень усложняет и сбивает с толку, но, в конце концов, я привык использовать совершенно новые методы для лучшего кодирования.

Методы массива

Array.isArray(value)
let new_array = old_array.concat([value1[,...[, valueN]]]])
  • "индекс чего-либо"
arr.indexOf(searchElement[, fromIndex])
  • "включает"
arr.includes(valueToFind[, fromIndex])      // true or false
  • "присоединиться"
arr.join([separator])                // returns a string
  • нажать/вытолкнуть, отменить сдвиг/сдвиг

Этот метод изменяет длину массива.

arr.push(element1[, ...[, elementN]])
arr.pop()
arr.unshift(element1[, ...[, elementN]])
arr.shift()
  • "кусочек"
arr.slice([begin[, end]])
let arrDeletedItems = array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
  • "плоский"
var newArray = arr.flat([depth]);

Методы массива для функционального программирования

let new_array = arr.map(callback( currentValue[, index[, array]]), thisArg])
let newArray = arr.filter(callback(element[, index, [array]])[, thisArg])
arr.reduce(callback( accumulator, currentValue[, index[, array]] )[, initialValue])
arr.every(callback(element[, index[, array]])[, thisArg])
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])

Функциональное программирование против императивного программирования

«Парадигма функционального программирования была специально создана для поддержки чисто функционального подхода к решению проблем. Функциональное программирование — это форма декларативного программирования.

При императивном подходе разработчик пишет код, подробно описывающий шаги, которые компьютер должен предпринять для достижения цели. Напротив, функциональный подход предполагает составление проблемы как набора функций, которые необходимо выполнить. Вы тщательно определяете входные данные для каждой функции и то, что возвращает каждая функция».(src: https://docs.microsoft.com/)

  • Императивное (процедурное) программирование
// to calculate the sum of array elements
const sum = (arr) => {
 let result = 0; 
 for (let i = 0; i < arr.length; i++) {
 result += arr[i];
 } 
 return result;
};
  • Функциональное (декларативное) программирование
// calculate the sum of array elements
const sum = (arr) => arr.reduce((total, item) => total += item, 0);

Это выглядит довольно чистым, коротким, выразительным, лаконичным кодом, менее подверженным ошибкам, проще в обслуживании и проще в отладке. Мы сообщаем компьютеру что мы хотим от него делать, а не как это делать. (источник: Overflowjs)