JavaScript Fundamentals - Object And Classes may 2019/Exercise - 10. Systems Register
Здравейте, доста пот хвърлих в продължение на седмица или 2 по следната задача, но безуспешно, та затова прибягвам до крайни мерки - помагайте с решение ако е възможно, благодаря предварително колеги..
Линкове:
Задача :
https://softuni.bg/trainings/resources/officedocument/41048/exercise-js-fundamentals-may-2019/2343
Джъдж:
Кодът ми не стига дори до някакво нагласяне на данните.. затова не съм го пуснал. Как да създам обект с пропърти обект?
Ами не искам да пускам готово решение. Така не се учи. А и няма смисъл щом не можеш и да разбереш обектите все още.
Но ето пример : кола с двигател и гуми като колата е обект двигателя е обект и гумите и те :Д
let tyre ={
"yearOfMaking":2019,
"durability:100
}
let engine={
"horsepower":300,
"pistons":4
}
let car ={
"engine":engine,
"tyres":[tyre,tyre,tyre,tyre],
"radio":{
"vendor":"sony",
"yearOfCreation":2000,
"maxVolume":30
}
}
ето така се прави, като радиото си е пак обект просто го инициализирам директно на property-то. В js property може да ти е всичко мога да сложа дори функция и тя ще си е валидна като property на обекта. в по високите нива на js и hoc и тн.. Това си е практика. примерно на колата мога да и сложа property "start" : function(){console.log("started")} и това си е напълно валидно и като кажа. car.start и ще го конзол log-не. Като ти гледам задачата имаш един обект system който държи в себе си components това е лист и тези components държат лист от subcomponents. И после имаш input разделяш го по space. И ти остава да си направиш проверките дали вече имаш някои от този тип system component subcomponent и това е. Малко nested objects но нищо особенно.
function solve(input) {
let obj = {};
for (let line of input) {
let count = 0;
let [fisrtName, secondName] = line.split(' ');
count += 1 + fisrtName.length + secondName.length;
if (!obj.hasOwnProperty(line)) {
obj[line] = count
}
}
let print = Object.entries(obj).forEach((e) => {
console.log(`Name: ${e[0]} -- Personal Number: ${e[1]}`)
})
}
ето ти колега дава 66 може би защото в единия тест са сложили 3 имена. но Колегата е прав с готов код не става. Обектите са нещо което ако не схванещ JavaScript ще ти е мега труден. Казвам го като човек който мина поправка в Теха заради тях.Общо взето следвай принципа:
1. Четеш си входа проверяваш,
2. създаваш обекта(не винаги се решават задачите с него но ако искаш да ги учиш саветвам те само с обекти),
3. Проверяваш дали съществува името в обекта ако не пълниш(според проблема който ти се дава)
4.Пълниш обекта
5.Сортираш
и упражняваш всички кейсове. Вземаш всички изпитни задачи за обекти и ще ги схванеш и после ще си кажеш еййй това е баси лената работа. Успехи в ученето