[JS] Using-objects Домашно - All Tasks/Всички задачи


16

Здравейте, колеги не намерих тема по тази домашна, а много ми трябваше...Аз вече реших задачите, нз колко са верни но уж изкарват желаните резултати...Ето и source - a към GitHub. Надявам се да съм полезен. Успех!

 




Отговори



2
Престарал си се - не ти трябва абсолютна стойност след като повдигаш нещо на втора степен - резултата винаги е положителен :) Не че пречи ама си създаваш излишен труд ( и на теб за писане, и на машината, като я затормозяваш с излишни операции). Един програмист трябва да е мързелив - това стимулира изключително много за намиране на елегантни решения. +1



0
Прав си, благодаря за препоръката..основателна е :)

от zhelyazkovn (2949 точки)

0
Като стана въпрос за първата задача не мисля, че е редно да закръгляваш до цяло число, защото е нормално да има дробни числа. Другото което е при закръгляването(ако все пак искаш да го правиш по-добре добавяй 0.5 преди parseInt, понеже parseInt(9.999) = 9, parseInt(9.999 + 0.5) = 10).

от RANOPILE (1038 точки)


9

Ето още един вариант на задачите.


от vic.alexiev (2299 точки)


0
Колега, имам едно питане на първа задачата, фукцията Point има едно 'р' във нея. Та за какво е това 'p', че нещо не зацепвам?

от Mitko_Mitev (1276 точки)

0
Това е конструктор на обект от тип Point (клас), който си има метод getDistance(). Методът смята разстоянието м/у this обекта (Point) и този, който е подаден като параметър (p). Виж как е използвана в getLength() на LineSegment "класа" :-) Другият вариант е да ползвам външна функция за разстояние, която приема 2 параметъра - двете точки.

от vic.alexiev (2299 точки)



4
На първа задача във функцията за дистанцията не използваш квадратен корен. Правилни ли са изчисленията на функцията ти?

от dsbonev (1234 точки)


0
Мислих, че са верни...ще ги погледна благодаря! В случая отворих темата да може ако на някой му потрябват решения да има от къде да види нещо да се подсети..моите далеч не са най-правилните сигурен съм :)

от zhelyazkovn (2949 точки)


1

За третата задача за функцията clone на първия ред си написал:

if (obj == null || "Object" != typeof obj)

typeof връща стринг с малка буква.


от nikostov (202 точки)


1

@zhelyazkovn

Колега, 2-ра задача, при така зададени условия в последния елемент на newArr си записваш функцията. Може да се избегне ако вместо for in цикъл ползваш for до i< this.length


от v_slavchev (1040 точки)


0
мдаа прав си, благодаря за коментара :)

от zhelyazkovn (2949 точки)


2

@zhelyazkovn

На първа задача, при изчисление на разтоянието формулата ти е леко грешна т.е. липсва ти един Math.sqrt();

Източник:

http://en.wikipedia.org/wiki/Distance

Едит: Сега видях, че по-горе е споменато :)


от Teodor92 (13062 точки)


2

На втора задача имаш една малка грешка

if(this[i]!=element)

трябва да е !==
 
иначе ти маха и стринга "1", а трябва да маха само интеджера 1



0
Благодаря прав си!

от zhelyazkovn (2949 точки)


1

Ето от мен deep copy задачата решена рекурсивно - копира напълно даден обект незавизимо от характера му и дълбочината на пропъртитата: цък

Edit: последната задача за групирането по пропътри: тук


от loloto (1073 точки)


3

моето решение на втора задача. Докато търсех как най-удачно да премахна елемент от масива, попаднах на функцията splice()

http://www.w3schools.com/jsref/jsref_splice.asp

Не знам до колко е полезна, тъй като не тествах кода с много и различни  данни.
http://pastebin.com/VF8RfVrB


от pdrenovska (2196 точки)


0
трябва да сложиш едно i-- след splice във if scope-a... Когато имаш повече от 1 последователни числа пропуска.


0
благодаря luzterin, ще го поправя
поправено: if (this[i] === number) { this.splice(i, 1); i--; // decreasing is required, because everytime we delete an element, we're changing the original array }

от pdrenovska (2196 точки)


0

[За 6-та задача]

Здравейте,

Понеже съм много нов в JS и тази задача ме затрудни доста искам да споделя, част от моето решение с въпроса "Разрешено ли е да се ползва масив на принципа на Dictionary?". Далеч съм от мисълта, че решението ми изглежда добре, но за конкретната задача работи прилично.

 

function groupPeople(array, property) {
            switch (property) {
                case "firstName": break;
                case "lastName": break;
                case "age":
                    {
                        var sorted = [];
                        for (var i = 0; i < array.length; i++) {
                            if (sorted[array[i].age] == undefined) {
                                sorted[array[i].age] = [];
                                sorted[array[i].age].push(array[i]);
                            }
                            else {
                                sorted[array[i].age].push(array[i]);
                            }
                        }
                        return sorted;
                    } break;
                default:
                    throw new Error("Error message"); break;
            }
        }
п.п: Та идеята ми е че за всяка от възрастите, която още несъществува, създавам нов масив от елементи и добавям всички обекти с пропърти age, които съответсват на тази възраст. Аналогично може да се направи и за firstname и lastname понеже няма проблем ключа да е стринг. После лесно се извикват с нужния ключ.

от FeRt1 (2866 точки)