Loading...
dstoianov891 avatar dstoianov891 18 Точки

07 Company Users Exercise JavaScript Associative Arrays

Здравейте, 

 

Имам проблем с една от задачите за домашно. Нулевите тестове минават, но Judge ми дава 60/100 и не мога да си открия грешката. 

Може ли някой да провери? Предварително благодаря!

https://pastebin.com/DUrr5VjJ

07.Company Users

Write a function which keeps information about companies and their employees.

You will receive array of strings containing company name and employee's id. Add each employee to the given company. Keep in mind that a company cannot have two employees with the same id.

When you finish reading data, order the companies by the name in ascending order.

Print the company name and each employee's id in the following format:

{companyName}

-- {id1}

-- {id2}

-- {idN}

Input / Constraints

  • The input come as array of strings, each in the format: "{companyName} -> {employeeId}".
  • The input always will be valid.

 

Examples

Input

Output

 

Input

Output

[

'SoftUni -> AA12345',

'SoftUni -> BB12345',

'Microsoft -> CC12345',

'HP -> BB12345'

]

HP

-- BB12345

Microsoft

-- CC12345

SoftUni

-- AA12345

-- BB12345

 

[

'SoftUni -> AA12345',

'SoftUni -> CC12344',

'Lenovo -> XX23456',

'SoftUni -> AA12345',

'Movement -> DD11111'

]

Lenovo

-- XX23456

Movement

-- DD11111

SoftUni

-- AA12345

-- CC12344

0
JavaScript Fundamentals 08/07/2019 16:32:15
willystyle avatar willystyle 2472 Точки
Best Answer

Използвай масив да пазиш id-тата, сега ползваш стринг с делиметер ',', но представи си имаш id което съдържа запетая (според мен това има в двата теста)

function solve(input) {
    let companies = {};
    for (const elem of input) {
        let [company, id] = elem.split(' -> ');
        if (!companies.hasOwnProperty(company)) {
            companies[company] = [];
        }
        companies[company].push(id);
    }
    let sorted = Object.entries(companies);
    sorted.sort((a, b) => a[0].localeCompare(b[0]));
    for (let elem of sorted) {
        console.log(elem[0]);
        let set = new Set(elem[1]);
        for (let number of set) {
            console.log(`-- ${number}`);
        }
    }
}

, после при сплита се изкривяват.

0
dstoianov891 avatar dstoianov891 18 Точки

Много благодаря!

1
willystyle avatar willystyle 2472 Точки

даже направо ги пази в сет, по-оптимално работи:

function solve(input) {
    let companies = {};
    for (const elem of input) {
        let [company, id] = elem.split(' -> ');
        if (!companies.hasOwnProperty(company)) {
            companies[company] = new Set();
        }
        companies[company].add(id);
    }
    let sorted = Object.entries(companies);
    sorted.sort((a, b) => a[0].localeCompare(b[0]));
    for (let elem of sorted) {
        console.log(elem[0]);
        for (let number of elem[1]) {
            console.log(`-- ${number}`);
        }
    }
}

 

0
08/07/2019 17:02:48
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.