Метод 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.
Ссылка:
Основное изображение кредит