JavaScript Array намалява () метод

Ако някога сте чели етикет за хранителна стойност, тогава можете да намалите разбирането на метода () в JavaScript.

Методът за намаляване в JavaScript ви дава лесен начин да вземете поредица от стойности и да ги комбинирате в една стойност или матрична сума въз основа на множество категории.

Леле, това е много в едно изречение, така че нека направим крачка назад тук.

Разбира се, винаги можете да използвате цикъл for, за да прегледате масив и да предприемете определено действие за всяка стойност. Но ако не използвате методи като filter (), map () и reduce (), тогава кодът ще стане по-труден за четене. Други разработчици ще трябва да прочетат всеки цикъл внимателно, за да разберат целта. И това ще създаде повече шансове за грешки, тъй като ще трябва да създадете повече променливи за проследяване на отделни стойности.

Методи Map изпълнява функция на всеки елемент в начален масив, преди да го съхрани в окончателен масив.

И намаляване на методите за комбиниране на елементи от първоначален масив в крайна стойност или масив от стойности.

Разбрах, че това е вид диета. От много прости методи, като преброяване на калории, до по-сложни диети като Аткинс или наблюдатели на тегло, целта е да дестилирате цялата храна, която бихте могли да ядете през деня, в една стойност. (или стойности), за да видите дали сте на прав път към отслабване.

намалява

Така че нека да скочим в него! За да разберете този урок, просто трябва да имате опит с цикли.

Симулиране на намаляване с контур

Ето бърз начин да покажете функцията redu (), използвайки цикъл за. Да предположим, че имате матрица с броя на калориите от 5 отделни храни, които сте яли през деня. Искате да знам колко общо калории сте консумирали. Ето кода.

Това е доста просто. Създайте променлива, за да задържите крайната сума, след което добавете към нея, докато преминавате през масива. Но все още трябва да се въведе нова променлива и цикълът не дава никаква представа за целта на цикъла.

Прост пример за намаляване

Научете как да постигнете същата цел с метода за намаляване ().

  1. Намаляването е матричен метод, така че ще започнем с броя на калориите.
  2. Той използва функция за обратно извикване, която работи на всеки елемент в масива.
  3. Той използва оператор return, за да покаже как стойността трябва да се натрупва след всяка итерация на матрицата.

Така че намаляването има някаква концепция за паметта. Докато преминава през всеки елемент в матрицата, стойностите се проследяват като сума до аргумента. В предишния ни пример трябваше да декларираме нова променлива извън обхвата на цикъла, за да „запомним“ стойностите.

Използвайте тази интерактивна версия, за да сравните диетичната версия с цифровата версия.

Може да изглежда, че няма голяма разлика в четливостта между това и for (). Но когато вие (или друг разработчик) трябва да сканирате стотици редове код, отстъпката ще ви даде бърз намек за целта на блока код.

Пример 2 Използване на обекти

Току-що разгледах едномерната мрежа досега. Но ако можете да итерирате през пълен набор от числа, можете също да прегледате пълен набор от обекти. Добавете име за всеки елемент, за да можем да разберем какво всъщност ядем през деня.

За закуска сте изяли пържола. с малко плодове. след това салата и пържени картофи за обяд. след това накрая сладолед за вечеря. Това е дяволски ден.

Добавихме и 0 в края, така че методът знае, че добавяме към число, започващо от 0, а не низ.

За щастие можете да видите потока, докато преминава през матрицата. Докато преглеждате всеки елемент, количеството се увеличава, за да представи общите консумирани калории през деня. Целият смисъл е тези стойности да се поставят в голям брой калории през деня.

Пример 3 Използване на множество категории

И така, що се отнася до калориите, защо, по дяволите, има толкова много различни диети? Няма да ходя на Уейд в Тес резюме - общо взето, има много разногласия относно „най-добрия“ начин за отслабване. Някои препоръчват да броите само калории, докато други ще разглеждат протеините, въглехидратите, мазнините и редица други фактори.

Нека си представим за момент, че искате да промените кода, така че да можете да оцените диетата въз основа на всяка обща диета. Ще трябва да следите въглехидратите и мазнините за всеки вид храна. След това ще трябва да обобщите всичко в края на годината, за да можете да разберете колко грама сте консумирали във всяка категория. Ето нашите хранителни обекти с фалшиви хранителни стойности.

Сега трябва да стартираме метода намаляване (). Но не може всичко да се преследва в една ценност. Искаме да запазим нашите категории. Така че нашата батерия трябва да е обект със същите категории като масива.

Ето бърза интерактивна диаграма,

Докато преминавате през всеки елемент, стойността на конкретно свойство в обект ще се промени. Ако обектът все още няма свойство с правилното име, той ще го създаде. Ето кода.

Използваме групи като обект, за да класифицираме стойности въз основа на името на тяхното свойство. Използваме ли името на магазина? Това е така, защото е незначително - ние просто искаме цифрите, за да можем да анализираме успеха на вашата диета за следващия ден.

Както можете да видите, имаше проблем в нашето производство. Имаме поле за име, което е настроено на "пържола". Не искаме да съхранявате името! Затова трябва да посочим друг аргумент - началната стойност.

Този аргумент идва след обратното повикване и ние искаме да инициализираме калориите, въглехидратите и мазнините в диапазон 0, така че нашият метод намалява знае, че това са само трите двойки ключ/стойност, които ще използваме за аргумента bucket. Можете да видите пример тук.