JavaScript Масиви : Розуміння зниження функції
синтаксис
arr.reduce(callbackFunction, [initialValue])
Що робити зменшують?
Зменшити це функція, яка петлі через масив.
Операції можна виконувати на масиві за допомогою функції зворотного виклику.
В кінці операції на масиві, знизити повертає одне значення
Зниження може бути використано, наприклад, в цілому в кошик
приклад
нехай обр = [1,2,3,4,5];
arr.reduce( (акумулятор, CurrentValue, currentIndex, масив) => {
//деякі операції;
повернути щось;
});
Як передзвонити функції
Функція зворотного виклику викликається для кожного елемента в масиві, переходить в 4 аргументи, які передаються за допомогою функції зменшення.
ці 4 аргументи можуть бути використані в нашій функції зворотного виклику.
Приймає чотири аргументи
- акумулятор – Перший елемент масиву на першому циклі або початкове значення, якщо вони надані. Потім повертається значення попереднього циклу.
- CurrentValue – Поточний елемент в масиві. Запускає від другого елементу масиву, тобто. прибуття[1], коли початкове значення аргументу не передається. Якщо початкове значення аргументу передається, то поточне значення починається з 1-го елемента в масиві обр[0].
- currentIndex – Індекс поточного елемента.
- масив – весь масив.
Робочий приклад
нехай обр = [1,2,3,4,5]; arr.reduce( (акумулятор, CurrentValue, currentIndex, масив) => { console.log(`акумулятор (На 1-му циклі, акумулятор обр[0], то повертається значення попереднього циклу): ${акумулятор}`); console.log(`CurrentValue (Контури через масив, починаючи з обр[1]): ${CurrentValue}`); console.log(`currentIndex: ${currentIndex}`); console.log(`масив: ${масив}`); console.log('---'); повернення акумулятора + CurrentValue; } );
вихід
акумулятор (На 1-му циклі, акумулятор обр[0], то повертається значення попереднього циклу): 1 CurrentValue (Контури через масив, починаючи з обр[1]): 2 currentIndex: 1 масив: 1,2,3,4,5 --- акумулятор (На 1-му циклі, акумулятор обр[0], то повертається значення попереднього циклу): 3 CurrentValue (Контури через масив, починаючи з обр[1]): 3 currentIndex: 2 масив: 1,2,3,4,5 --- акумулятор (На 1-му циклі, акумулятор обр[0], то повертається значення попереднього циклу): 6 CurrentValue (Контури через масив, починаючи з обр[1]): 4 currentIndex: 3 масив: 1,2,3,4,5 --- акумулятор (На 1-му циклі, акумулятор обр[0], то повертається значення попереднього циклу): 10 CurrentValue (Контури через масив, починаючи з обр[1]): 5 currentIndex: 4 масив: 1,2,3,4,5 ---
Забезпечення початкового значення
Завдання другого параметра (InitialValue) в функції зниження викличе InitialValue бути прийнятий в якості аргументу акумулятора на першому циклі.
Зверніть увагу, що поточне значення на 1-му циклі тепер починається з першого елемента масиву
Робочий приклад
нехай обр = [1,2,3,4,5]; arr.reduce( (акумулятор, CurrentValue, currentIndex, масив) => { console.log(`акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): ${акумулятор}`); console.log(`CurrentValue (Контури через масив, починаючи з обр[0]): ${CurrentValue}`); console.log(`currentIndex: ${currentIndex}`); console.log(`масив: ${масив}`); console.log('---'); повернення акумулятора + CurrentValue; }, 0 );
вихід
акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): 0 CurrentValue (Контури через масив, починаючи з обр[0]): 1 currentIndex: 0 масив: 1,2,3,4,5 --- акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): 1 CurrentValue (Контури через масив, починаючи з обр[0]): 2 currentIndex: 1 масив: 1,2,3,4,5 --- акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): 3 CurrentValue (Контури через масив, починаючи з обр[0]): 3 currentIndex: 2 масив: 1,2,3,4,5 --- акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): 6 CurrentValue (Контури через масив, починаючи з обр[0]): 4 currentIndex: 3 масив: 1,2,3,4,5 --- акумулятор ( На 1-му циклі, це початкове значення, то повертається значення попереднього циклу): 10 CurrentValue (Контури через масив, починаючи з обр[0]): 5 currentIndex: 4 масив: 1,2,3,4,5 ---
