[JS Frameworks] Домашно Underscore.JS


5

Link: http://pastebin.com/piUVNr5X

На повечето места може да се използва _.chain(), но на мен ми беше по-лесно така да дебъгвам. Качвайте и други варианти, защото задачите предразполагат към различни решения :)

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

p.S. OOP-то може да се пооправи, но това по-късно 




Отговори



7

Ето и още един вариант на домашното, ако някои иска  да види различна версия : 

https://github.com/Polichronov/Underscorejs/blob/master/Homework


от Al.polichronov (1567 точки)


2

Решения

Ето и моите решения. Последните 2 задачи ги правя без invert(). Първо правя CountBy за да намеря броя на всяко име, взимам максималната стойност с _.max(), мачвам я в един цикъл с ключа и принтирам на конзолата. 


от georgi.ivanov (3261 точки)


0
За третата задача от условието разбирам, че един студент има повече от една оценка. А ако е само с по една оценка и има 2ма или повече студенти с максимална оценка с _.max ще върне само 1 резултат.

от boryanap (5 точки)

0
Точно така. Целта ни е да намерим максималната оценка. Ако искаш да изведеш всички студенти - можеш да обиколиш колекцията, да провериш кои са с най-висока оценка и да ги изведеш.

от georgi.ivanov (3261 точки)


2

Аз съм подходил различно на места, но като гледам има доста възможни начина да се направят задачите. Слагам и моите да има за сравнение.

source


Поздрави!


от zhelyazkovn (2949 точки)


4
Дончо дай нещо по тегаво, тия задачи неструват. :D

от RamiAmaire (1868 точки)


0
Стига ве, Рами, тъкмо се почувствах добър :D

от zhelyazkovn (2949 точки)

0
Екшънът ще бъде при Angular и Kendo, сега почивка... :D

от ivaylo.kenov (30760 точки)


2

Ето един комплект решения и от мен: GitHub

И ето един вариант, в който си направих малко експерименти с една от новите функционалности на JavaScript 1.7. , a именно така наречените arrow functions (приличат доста на ламбдите от C#).

Note: Arrow functions, се поддържат само в Firefox 23, 24, 25 и НЕ трябва да се използват при реални проекти още!

Много ми се искаше да си направя малко тестове и с поддръжката на класове и модули, но уви, се оказа, че не се поддържат никъде още :D

Ето и малко инфо, за това какво може да очакваме в JS 1.7:

1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla

2. https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_%28Merge_into_own_page.2Fsection%29

3. Какво се подържа къде: http://kangax.github.io/es5-compat-table/es6/

4. http://net.tutsplus.com/articles/news/ecmascript-6-today/


от Teodor92 (13062 точки)


2

На мен много ми харесва подхода с chaining-а и съм ги направил така. Предимството е, че можеш да го четеш доста по-лесно - цък


от nikostov (202 точки)


3

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

Задачки.


от tankovski (2828 точки)


0
  • var people = [{ lname: "Bla bla bla" }]
  •  
  • var mostCommonLastName = _.chain(people).groupBy(function (person) {
  •         return person.lname;
  • })
  • .max(function (group) {
  •         return _.size(group);
  • })
  • .first()
  • .value()
  • .lname;

Аз не се сетих за invert и го направих по този начин..


от SVGN_H (3048 точки)


1
Кога ще се качи видеото от вчера?



0
Здравей,
Видеата взеха да се появяват.
Поздрави!

от nikolaikolarov (2177 точки)

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



0

Здравейте,

Ето и моите задачи. Отначало се полакомих да използвам chain-ване, но после реших да го изчистя, тъй като се получиха едни дълги "чудеса". За 6-та и 7-ма задача - единия път реших да го направя с групиране и сортиране, другия път с countBy, max и след това с invert си взимам търсяния ключ.

Ще се радвам на всякакви съвети и/или критики.

Поздрави!


от nikolaikolarov (2177 точки)