Софтуерно Инженерство
Loading...
Lyubosumaz avatar Lyubosumaz 5 Точки

08. Kitchen от Exercise: JS Classes

Това ми е кода: https://pastebin.com/067BY3ah дава ми 53/100 в judge. Условието на задачата е объркващо "just print the message:"??, за целия метод "makeTheOrder()" няма sample, може би конструктора съм объркал щеше ли да ми е по-лесно, ако бях направил this.productsInStock = { }; и this.actionsHistory = { };. Дайте идея как да си оправя кода.

Условие: https://judge.softuni.bg/Contests/Practice/Index/1534#0

Тагове:
0
JS Core
willystyle avatar willystyle 996 Точки
Best Answer

Ето ти едно решение, където даже има анализ кои тестове имат проблеми.

https://pastebin.com/8WSfMtRB

При теб, само на пръв поглед ред 48 какво е this.this.numberOfMeals в този клас нямаш такова пропърти (или гетър), и т.н. разгледай кода

1
Lyubosumaz avatar Lyubosumaz 5 Точки

Добре. Еми трябваше ми counter на бройката и го направих така. Мерси много, утре ще довърша задачата, че сега стана много късно и съм вече outburn-ал, ще дам линк. 

1
Lyubosumaz avatar Lyubosumaz 5 Точки

Добре може би те излъгах, аз трябва твърде много да променя решението си, то ще стане все едно съм я преписал. Само ще я коментирам.

Искам да питам в конструктора този запис this.budget = +budget; ще направи this.budget typeof number? Много яко, аз това не го знаех. Аз трябва ли да ползвам Number(this.budget)? Също може да е грашка и това, че this.productsInStock = []; при мен е array. Твърде сложно става, правят се много фор лупове за проверки и тн, видях го докато я пишех задачата ама бях написал доста код и продължих.

На loadProducts е странен ретътна. Кофти ако let messageLog = [] е задължителен. Гледам, че и новия синтаксис на destructuring-а не го кефи judge let [product, quantity, price] = entry.split(' ').

this.menu[meal] е с друга структура. Аз съм this.menu[meal]array, ти ползваш this.menu[meal]object. Object.keys(this.menu).length e готин начин да се вземе дължина.

makeTheOrder колко лесно е направен, леле аз какво мазане правя. Също имам правописна грашка в ретърна то е (${meal}) аз съм написал ${meal} без скобите. Вече дава 73/100. Ох, запалих се, е сега ще я напиша наново.

0
05/07/2019 13:29:55
Lyubosumaz avatar Lyubosumaz 5 Точки

https://pastebin.com/cCgEksVK judge дава 93/100. Нямам идея какво може да е. Вероятно нещо в loadProducts(). Спирам с тази задача.

if (this.productsInStock.hasOwnProperty(productName)) е същото като if (this.productsInStock[productName]) ?

И защо така взимаш стойностите: let price = +entry.pop(), let quantity = +entry.pop(), let product = entry.join(' ') за оставащия с елемент .join(' ') някакво ми е странно. Последния елемент може да се вземе и със .shift() и с [0] и с .pop(). Това за бързодействие ли е?

0
05/07/2019 14:37:20
TeodorStefanovPld avatar TeodorStefanovPld 1261 Точки

+ jsstring го прави число coerse-ва го . Тжва е краткия начин. По принцип конттрукторите в js на обектите се ползавт рядко това са скъпи операции.products instock като обект е много по лесно името ти е продукта value-то дали имаш в наличност.

Масивите не можеи да ги обходиш с имена а по индекс такафче object.haspropery(name) e различно. А последното е въпрос на стил по-скоро.всеки пише по различен начин. А и така с индексите си малко уязвим ако нещо се промени. Или ако слез време си гледаи кода да се сетиш това защо е така.

0