.map(), .sort(), .filter() и .reduce()

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

Array.prototype.filter()

След като предоставите масив, методът filter() връща нов масив, съдържащ елементи, които са преминали условието, зададено във функция за обратно извикване. "Прочетете още".

const arr = [1, 2, 3, 4, 5]
const filtered = arr.filter(number => number%2)
// filtered = [1, 3, 5]

Array.prototype.map()

Map() връща нов масив въз основа на предоставена функция за обратно извикване. Ако питате каква е разликата между map() и forEach(), имам отговор. map() връща масив и можете да свържете друга функция върху него, докато forEach() затваря канала. Да кажем, че искаме да сортираме новия масив:

const arr = [1, 3, 4, 5, 2]
const mapped = arr
                .map(number => number + 1)
                .sort()
// mapped = [2, 3, 4, 5, 6]
const forEached = arr
                   .forEach(number => number + 1)
                   .sort()
// Uncaught TypeError: Cannot read property 'sort' of undefined

Array.prototype.sort()

sort() сортира масива и го връща обратно с пренаредени стойности. Няма да навлизам в механиката му тук, най-вече защото сортирането винаги ме обърква и е по-добре просто да прочетете повече за него тук.

Array.prototype.reduce()

И запазих любимата си за последно. Методът reduce() прилага функция срещу акумулатор и всеки елемент в масива (отляво надясно), за да го намали до една стойност. (Бях мързелив, моля, не обръщайте внимание, че току-що прекъснах дефиницията на MDN).

const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk'];   
const transportation = data.reduce(function(obj, item) {      
 if (!obj[item]) {         
   obj[item] = 0;      
 }      
 obj[item]++;      
 return obj;    
}, {});

Кодът по-горе взема масив от данни и го предава на метода reduce(). Започваме с празен обект и методът отчита появата на всеки елемент в масива.

Това конкретно упражнение наистина ми помогна с няколко кодови теста, с които се затрудних, така че ура за нови знания!

Друг нов трик, който научих, беше console.table(), който отпечатва таблица в конзолата, а не обичайния обект, който получавате с console.log().

Това цялостно упражнение беше наистина хубаво и очаквам с нетърпение втората част!