Метод Array.map().

Метод map принимает функцию обратного вызова в качестве аргумента и вызывается для каждого элемента в данном массиве. Функция map вернет новый массив по результату вызывающей функции. Функция map не изменит исходный массив. Следовательно, это неизменяемая функция.

Давайте начнем с простого примера, чтобы проиллюстрировать все вышеперечисленные пункты.

Теперь мы очищаем, что функция обратного вызова принимает текущее обработанное значение в качестве первого аргумента, обрабатывает его и возвращает новое значение. Затем он будет нажимать на новый массив.

Потратьте минутку и представьте, что если бы мы не передавали никаких параметров в функцию карты? fruits.map(()=> {})

В функции обратного вызова есть несколько необязательных параметров. Я хочу упомянуть, что он принимает 2-й аргумент в функции обратного вызова — это индекс текущего вызываемого значения из массива.

Метод Array.reduce()

Как следует из названия метода, этот метод сведется к одному значению. В частности, этот метод reduce будет выполнять reducer function, который мы предоставляем в качестве функции обратного вызова, и вызывать каждый элемент. Наконец, функция reduce вернет одно значение.

Эта функция редуктора требует 2 параметра. В reducer function нам нужно вернуть значение для использования в качестве аккумулятора в следующей итерации (если только оно не вернет undefined). В первый раз первый элемент массива является аккумулятором, а второй элемент — текущим значением. (Это произойдет только при первом выполнении функции reducer и если не было предоставлено initialValue)

Давайте посмотрим на это на примере.

Мы видели, как это работает. Давайте посмотрим на показательный пример. Если мы хотим получить сумму этого массива, мы можем изменить функцию reducer, как показано ниже.

const reducer = (acc, val ) => { return val+acc; }

Но полезно знать, что есть еще два необязательных параметра, принимаемых функцией reducer. Это currentIndex и array.

Функция reduce принимает второй аргумент функции редуктора и initialValue.

Особые сценарии:

Сценарий 01:

Массив имеет только одно значение.

В функции reduce нет начального значения.

Результат: возвращается соло-значение в массиве.

const marks = [30]
const result = marks.reduce((acc,val)=> {
    console.log(`current acc: ${acc}`);
    console.log(`current val: ${val}`);
})

Сценарий 02:

Массив не имеет значения.

Есть начальное значение для функции reduce

Результат: вернется исходное значение.

const marks = []
const result = marks.reduce((acc,val)=> { },30)

В обоих сценариях функция обратного вызова не будет вызываться.

Если оба не предоставлены, то мы получаем TypeError.

Ссылка:

JavaScript-массив MDN

Основное изображение кредит