Професионална програма
Loading...
+ Нов въпрос
kozmoza avatar kozmoza 4 Точки

Inbox Manager

Здравейте!

Предстои ми изпит JS Fundamentals, но задачите с обекти ме затрудняват. Порешавах доста, но има нещо което изначално не разбирам: как да пълня property -то на един обект без да затривам предишното property?

Решавам задачата -  Inbox Manager, от https://judge.softuni.bg/Contests/Practice/Index/1928#2 от Final Exam - 07 December 2019 Group 1 но стигам до тук. Ще съм благодарен ако някой ми помогне до случая "Send" - именно там не знам как да пълня обекта, с останалите мисля че ще се справя и сам като разбера логиката.

Ето и кода:

https://pastebin.ubuntu.com/p/h3Wxk8GcX2/

Знам че е ужасен:)

Тагове:
0
JavaScript Fundamentals
krasizorbov avatar krasizorbov 409 Точки

Мисля че ще е по лесно ако имаш името за ключ а масив за валю, например ето така:

let [command, name, text] = userLine.split("->");
if (command == "Add") {
  if (!collection.hasOwnProperty(name)) {
    collection[name] = [];
  }
} else if (command == "Send") {
  collection[name].push(text);
} else if (command == "Delete") {
  delete collection[name];
} else {
  console.log(`${name} is already registered`);
  break;
}

При delete също трябва да направиш проверка!

0
04/08/2020 16:59:25
kozmoza avatar kozmoza 4 Точки

https://pastebin.com/aKngdWiE

Здравейте пак,

Докарах я до тук, но не знам как да обърна масива наобратно, както го иска judgе-а. Ако може отново малко помощ?

0
krasizorbov avatar krasizorbov 409 Точки

Защо искаш да го обърнеш, мисля че е казано как да го сортираш. Може да ползваш тези 2 функции:

Това е парче от моя код само за да видиш как да сортираш,. Аз го направих с map ама е почти еднакво:

Първата функция сортира по дължина на масива а втората по името на юзъра.

users = new Map(
    [...users.entries()].sort((a, b) => sortByCount(a, b) || sortByName(a, b))
  );
  console.log(`Users count: ${users.size}`);
  for (const user of users) {
    console.log(user[0]);
    for (const u of user[1]) {
      console.log(` - ${u}`);
    }
  }
  function sortByCount(a, b) {
    return b[1].length - a[1].length;
  }
  function sortByName(a, b) {
    return a[0].localeCompare(b[0]);
  }

0
04/08/2020 18:59:53