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
Добре. Еми трябваше ми counter на бройката и го направих така. Мерси много, утре ще довърша задачата, че сега стана много късно и съм вече outburn-ал, ще дам линк.
Добре може би те излъгах, аз трябва твърде много да променя решението си, то ще стане все едно съм я преписал. Само ще я коментирам.
Искам да питам в конструктора този запис 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. Ох, запалих се, е сега ще я напиша наново.
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(). Това за бързодействие ли е?
+ jsstring го прави число coerse-ва го . Тжва е краткия начин. По принцип конттрукторите в js на обектите се ползавт рядко това са скъпи операции.products instock като обект е много по лесно името ти е продукта value-то дали имаш в наличност.
Масивите не можеи да ги обходиш с имена а по индекс такафче object.haspropery(name) e различно. А последното е въпрос на стил по-скоро.всеки пише по различен начин. А и така с индексите си малко уязвим ако нещо се промени. Или ако слез време си гледаи кода да се сетиш това защо е така.