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


16

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

 




Отговори



0

@zhelyazkovn - Проверката дали 3те отсечки образуват триъгълник (в зад.1) е невярна. Гледам, че доста хора я използват затова пиша (не да се заяждам или подобно). Това че сумата на дължините на 2 от страните е по-голяма от дължината на 3тата не ги прави триъгълник. Формулата е вярна за триъгълник, но не е условие за 3 отделни отсечки да формират такъв.


от nikivat (246 точки)


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

от topalkata (6442 точки)

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

от nikivat (246 точки)



4

Ето моето решение на 6та задача:

function groupPersons(array, groupBy) {
                var groupedArr = {};

                for (var i in array) {
                    var person = array[i];
                    var group = person[groupBy];

                    if (!groupedArr[group]) {
                        groupedArr[group] = []; //create key
                    }
                    groupedArr[group].push(person); // add to key            
                }             
                return groupedArr;
            }

ето и линк към пълния код https://gist.github.com/bstaykov/2051dd74f3ba8d045720


от bstaykov (528 точки)


0
Не знам дали някой е обърнал внимание, но при 2-ра задача, при принтиране на масива, prototype функцията също се отпечатва. Това е защото се използва for-in цикъл. Той итерира не само елементите на масива, а и prototype функциите, нашити на типа. Ако не искате да се вижда навсякъде функцията - нормален for цикъл ви оправя.
Поздрави от мен.

от ksevery (439 точки)


0
Аз сложих в началото на цикъла: index = parseInt(index,10); и нямам проблеми :).

от BoyanT (39 точки)


0
Здравейте колеги,
3та задача, "deepcopy" , има едно условие което мисля че пропускате (или аз не го разбирам правилно):
The function should work for both primitive and reference types
което аз разбирам да копираме правилно и обект в обект.
var obj = { first : "value", second : { second_item: "some_value" } };
first е primitive type, second e reference type
Не виждам някое решение да работи за reference types. Ето тук е обяснено по-ясно :
http://andrewdupont.net/2009/08/28/deep-extending-objects-in-javascript/



0
Колега, ето ти решението ми, което прави deep copy по начина, по който си обърнал внимание, че трябва да се прави. Обърни внимание и на теста, който показва това. Не съм изучавал темата подробно, но едва ли на нито един колега, писал по-горе, решението не прави дълбоко копие на вложени обекти. :) https://github.com/Varbanov/TelerikAcademy/blob/master/JavaScript%20Fundamentals/09.%20Objects/09.%20Objects/scripts/03-deep-copy-function.js

от varbanoff (2325 точки)

0
Към колегата varbanov за тази част от кода му: for (var prop in object) { if (object.hasOwnProperty(prop)) {
Тази проверка не е ли ненужна? Все пак обикаляш по prop, които обекта когото си подал има.

от BoyanT (39 точки)



0
Здравейте колеги,
Имам един въпрос по 4-та задача. Това ми е кодът: http://pastebin.com/bs5gKRXs
Не мога да разбера защо в тестовата ми функция само за първото пропърти ми дава, че се съдържа в обекта, а другите две - не. При размяна на позициите на пропъртитата или имената им, отново ми дава максимум едно от тях, че е съществуващо, но не мога да разбера каква е зависимостта и къде е проблемът??



0
Може ли да покажеш тестовата функция? Аз задачата я реших с ==, не с ===, но дори с === пак си ми изкарва true :).

от BoyanT (39 точки)

0
Ето я тестовата функция - има я и в кода var testObject = { credit: 1000, ap: 500, sum: 25 } conteinPreperty(testObject, "credit"); conteinPreperty(testObject, "ap"); conteinPreperty(testObject, "sum");
В браузъра резултате : Object contein this property Object does not contein this property Object does not contein this property