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

Store Catalogue Fundamentals

Здравейте 

Имам един проблем със задача номер 9 "Catalogue" от JS-Fundamentals-Objects-and-Classes-Exercise. Това е първото ми решение https://pastebin.com/uUxbqWYP.

Проблема ми oбаче е, че когато стигна до console.log във VS code дебъгера ми влиза в някакъв файл, който се казва constructor и за да продължа нататък да дебъгвам трябва в call stack да кликна на continue. Затова се опитах да заменя console.log със return. Нещо обаче не ми се получава. За да работи return трябваше да махна print() функцията. Ето решението с return https://pastebin.com/p3mbZq4K 

Ако на някой му се занимава, ще се радвам да пише, как да си запaзя функцията print(), но да ползвам return.

Благодаря предварително.

Тагове:
0
JavaScript Fundamentals
Axiomatik avatar Axiomatik 1258 Точки

Don't see anything wrong with both solution, I have changed the function in your code to work with return. Also find the default solution given by SoftUni instructors:

Best,

Code:

function catalogue(arr) {
    let obj = {};

    for (let line of arr) {
        let [productName, price] = line.split(' : ');
        obj[productName] = price;
    }

    let sortedItem = Object.entries(obj)
        .sort((a, b) => a[0].localeCompare(b[0]));

    let string = print2(sortedItem);
    console.log(string);

    // print(sortedItem);

    function print(arr) {
        let lastName = '';
        for (let line of arr) {
            let name = line[0];
            let firstChar = name.charAt(0);

            if (firstChar !== lastName[0]) {
                console.log(`${firstChar}`);
            }
            console.log(`  ${name}: ${line[1]}`);
            lastName = name;
        }
    }

    function print2(arr) {
        let lastName = '';
        let result = '';

        for (let line of arr) {
            let name = line[0];
            let firstChar = name.charAt(0);

            if (firstChar !== lastName[0]) {
                result +=`${firstChar}\n`;
            }

            result += `  ${name}: ${line[1]}\n`;
            lastName = name;
        }

        return result;
    }
}

Instructor solution:

function solve(input) {
    const catalog = {};
    
    for (let line of input) {
        const arr = line.split(' : ');
        const [product, price] = line.split(' : ');
        const letter = product[0];

        if (catalog.hasOwnProperty(letter) === false) {
            catalog[letter] = {};
        }

        catalog[letter][product] = price;
    }

    const sortedKeys = Object.keys(catalog).sort((a, b) => a.localeCompare(b));

    for (let key of sortedKeys) {
        console.log(key);
        const sortedProducts = Object.keys(catalog[key])
            .sort((a, b) => a.localeCompare(b));

        for (let keyP of sortedProducts) {
            console.log(`  ${keyP}: ${catalog[key][keyP]}`);
        }
    }
}


 

1
14/05/2021 07:38:41