Софтуерно Инженерство
Loading...
+ Нов въпрос
Tr00peR avatar Tr00peR 569 Точки

[Homework] JavaScript Basics - Functions and Objects

Здравейте, това са моите решения на задачите от домашното за функции и обекти в JavaScript.

  1. 01-lastDigitOfNumber.js
  2. 02-nthDigitOfNumber.js
  3. 03-largestSumOfDigits.js
  4. 04-biggerThanNeighbors.js
  5. 05-reverseWords.js
  6. 06-countOfDivs.js
  7. 07-youngestPerson.js
  8. 08-sumTwoHugeNumbers.js
  9. 09-arrayPrototypeFunction.js
  10. 10-deepCopyOfObject.js

Moля за коментари, забележки, похвали, препоръки и тн.

Поздрави!

18
JavaScript Fundamentals
lostm1nd avatar lostm1nd 121 Точки

Ето още един непълен комплект решения. Има последните няколко задачи, тъй като са малко по-интересни. Последната задача според мен е зададена грешно. Обект, в който има един масив с хора? То дори така записано, това нещо е невалидно. Правя обект и в него слагам някакви изрази ??? Според мен трябва да е просто масив с хора...

1
cherokee avatar cherokee 146 Точки

То доста от задачите са малко объркващи, а на някои даже са невъзможни да се изпълнят условията с поставените условия - например 4-та казва да се връща Boolean или undefined (това са си три състояния: true, false и undefined), а по-долу в примерите имаш: "not biggger" = false, "bigger" = true, "invalid index" = undefined (по условие) ..... "only one neighbor" = ????? ами сега. Варианта ти е да връщаш съобщенията, които се очакват на конзолата директно от функцията (което е в разрез със условието, но някои колеги са го направили именно така) или да отсвириш последният вариант на отговор и да го приравниш на този за undefined в извикващата функция (което според условието на задачата си е ОК, но според примерите ще е невалиден отговор). 

1
keller avatar keller 45 Точки

И аз ще постна мойте решения ако някой иска да ги погледне - в гитхъба са. За демо - clone и всичко е в 1 сайт.

1
shorti avatar shorti 47 Точки

Ето и моите решения -> GitHub 
За 11-та задача ползвам underscorejs.

 

1
GoShow avatar GoShow 595 Точки

От сутринта до сега 6 задачи са решени :) TODO// останалите, но трябва да ида днес и на лекцията към която е домашното. Ето линк THE LINK

 

Edit: вече са 7 - отметнахме задължителните и за това домашно, следват звездички

0
cherokee avatar cherokee 146 Точки

@Tr00peR и @shorti: За 10-та задача сте намерили много хитро, кратко и елегантно решение, но в случая би сработило само, ако му подаваш обекти, които нямат методи, а само данни. JSON формата (stringify/parse) не взима функциите под внимание, а само пропертита, които имат стойности, т.е. при клонирането на обекта ще загубиш частти от оригиналният обект, които въобще няма да присъстват в копието. Единственият начин да се пребориш с това е да обходиш всички пропертита в оригиналният обект едно по едно и да ги копираш в новият обект, като при проперти, което е от тип "object" извикваш рекурсивно отново clone() функцията (тук трябва да направиш и проверка, да разграничиш "чист" обект от масив, за да знаеш в копието какво да създадеш). По този начин функциите също ще се копират в новият обект (те се явяват просто данни (код) при този начин на копиране. Дано ме разбирате какво искам да кажа, че малко се оплетох.

1
Dominik avatar Dominik 82 Точки

Здравейте колеги,

Имам питане относно 8-ма задача ... може ли някой да ми обясни как точно трябва да добавя външна библиотека в JS- a?

Ето го кода ми в момента -->  http://pastebin.com/V4RXwBrV  .js файла съм го поставил в директорията на проекта (e.g. JSFunctions/sumHugeNumbers ( и тук съм изплющял .js файла). 

Като се опитам да run-на програмaта ми гърми със следната грешка 'Error Cannot find module ./bignumber.js ......'.

Гледах из форумите насам натам , но не намерих решение на проблема. Явно аз не поставям на правилното място .js файла ... 

Бихте ли дали някакви идей/насоки как да го излекуваме :) 

 

//Редакция 

Ами ставаше дума , че съм сложил външната библиотека ( bignumber.js) в директорията на проекта (e.g. JSFunctions/sumHugeNumbers   

С една дума , да и 2-та файла са в една директория :/

Ще опитам с друга библиотека 

0
ttitto avatar ttitto 1155 Точки

Така както си го написал би трябвало да работи, ако и двата ти файла са в една и съща папка. Но от обяснението ти въобще не става ясно кой js файл къде си "изплющял".

0
Dominik avatar Dominik 82 Точки

След като смених външната библиотека заработи :) . Ето линк ако някой друг се сблъска с подобен на моя проблем -> https://github.com/peterolson/BigInteger.js 

 

 

Ето ги и задачите и от мен без 11-та. 

>> h0mew0rk <<  Със сигурност има доста забележки така , че казвайте ако мога да подобра нещо за в бъдеще :)

Поздрави,

 

0
borislavml avatar borislavml 368 Точки

Ето решения без 11-та и от мен: ЛИНК. 

cherokee прав си за 10-та задача, но според мен умишлено е даден инпута обекти без функции, а само с пропъртита за да изпозлваме JSON. Наков изрично споменава в лекцията, че JSON стрингосва и се губят функциите, а после "подсказа" , че 10-та задача ще стане с JSON. Иначе, ако го направиш по начина, по който описваш ( който лично аз нямам идея как ше се случи, бос съм на advanced JavaScript теми) , още по-добре за теб smile.

1
cherokee avatar cherokee 146 Точки

Да прав си, сега изгледах филмчето и Наков го споменава (щом началството казва, че е ОК в случая да се направи така, всичко е наред :) ). Излиза, че съм го цитирал :) А иначе не е въобще трудно да си обходиш обекта (макар, че наистина звучи малко като rocket science).  Ето едно линкче, на което съм нафлякъл някакви коментари по кода, сам ще се убедиш, че няма нищо сложно и едва ли може да се каже, че е advanced JavaScript тема. 

 

1
aslv1 avatar aslv1 304 Точки

Колеги, ето така направих задачата за „дълбоко копие“ на обект laughing

Използвах Object.create();.

3
nadia_dr avatar nadia_dr 13 Точки

Здравейте, някой може ли да ми каже как проверяеа дали в 3-та задача аргумента е число и дали е цяло? аз пробвам с: 

for (var i = 0; i < arr.length; i++) {
if ((typeof(arr[i]) !== 'number') || Math.floor(arr[i])!==arr[i]){
console.log('undefined');
break;
}

но пак нещо не работи за последния пример с 3.3.

също как превръщате поредица от числа- в масив?

Разгледах постнатите решения на задачата, но не открих.

 

ПП: проверката сработи, ето решението ми: http://pastebin.com/d1eN1Nz7 :)
0
cherokee avatar cherokee 146 Точки

Дали е число може да проверяваш с isNaN(arr[i]) - (ако не е число ще ти върне true), а дали е цяло може да проверяваш с arr[i] % 1 === 0 - (ако е не е цяло ще ти върне false).

 

За поредица от числа (един стринг) в масив просто ги split(' ') - ваш и това ти въща масив от числа (в стринг). ПОсле при операциите с тях JavaScript автоматично ти ги конвертира до тип число (без "+" операцията - тя ще ти конкатенира). Ако искаш изрично да ги направиш масив от числа, може да ги минеш през един цикъл (или .forEach() ) и да ги конвертираш до числа (с parseInt() или parseFloat() или по бързото единичен + пред текущия елемент : arr[i] = +arr[i];).

3