Loading...
KatAngelova avatar KatAngelova 2 Точки

Browser History - Objects and Classes - More Exercises - JavaScript

Здравейте, още не мога да зацепя обектите..и мъдря една задача сигурно цял ден и повече от 80/100 не мога да получа. Не намерих стара такава тема, свързана с конкретната задача. Ако може някой по-разбиращ, да удари едно рамо къде бъркам, защото забих .

задачата https://judge.softuni.bg/Contests/Practice/Index/1318#3

моето грозно решение https://pastebin.com/EDCzSjCP

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

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

Good code, just more complicated than needs to be. Helper functions don't need to return the object, you can directly modify the object within the scope of the function itself:

function solve(object, stringArray) {
    // const brName = object['Browser Name'];

    let newObj = {
        'Browser Name': object['Browser Name'],
        'Open Tabs': [...object['Open Tabs']],
        'Recently Closed': [...object['Recently Closed']],
        'Browser Logs': [...object['Browser Logs']],
    };

    for (let command of stringArray) {
        let data = command.split(' ');
        let currentCommand = data[0];
        let site = data[1];

        if (currentCommand === 'Open') {
            openTab(object, site);
            // openTab(object, site, newObj);
            // browserLogs(object, command, newObj);
        } else if (currentCommand === 'Close') {
            close(object, site);
            // close(object, site, newObj);
            // browserLogs(object, command, newObj);
        } else if (command === 'Clear History and Cache') {
            deleteObject(object);
        }
    }

    console.log(object['Browser Name']);
    console.log(`Open Tabs: ${object['Open Tabs'].join(', ')}`);
    console.log(`Recently Closed: ${object['Recently Closed'].join(', ')}`);
    console.log(`Browser Logs: ${object['Browser Logs'].join(', ')}`);

    function openTab(obj, site) {
        // function openTab(obj, site, secondObj) {
        // if (Object.keys(obj).length === 0) {
        //     obj = { ...secondObj };
        // } else {
        //     obj['Open Tabs'].push(site);
        // }
        // return obj;

        obj['Open Tabs'].push(site);
        browserLogs(object, 'Open ' + site);
    }

    function browserLogs(obj, command) {
        // function browserLogs(obj, command, secondObj) {
        // if (obj && Object.keys(obj).length === 0 && obj.constructor === Object) {
        //     obj = { ...secondObj };
        // } else {
        //     obj['Browser Logs'].push(command)
        // }

        obj['Browser Logs'].push(command)

        // return obj
    }

    function close(obj, site, secondObj) {
        // secondObj = Object.assign({}, obj);

        // if (secondObj['Open Tabs'].includes(site)) {
        //     let index = secondObj['Open Tabs'].findIndex(x => x === site);
        //     let result = secondObj['Open Tabs'].splice(index, 1);
        //     secondObj['Recently Closed'].push(result[0]);

        //     return secondObj;
        // }

        if (obj['Open Tabs'].includes(site)) {
            let index = obj['Open Tabs'].findIndex(x => x === site);
            let result = obj['Open Tabs'].splice(index, 1);
            obj['Recently Closed'].push(result[0]);
            browserLogs(object, 'Close ' + site);
        }
    }

    function deleteObject(obj) {
        // secondObj = Object.assign({}, obj);
        // delete secondObj['Browser Name'];
        // delete secondObj['Open Tabs'];
        // delete secondObj['Recently Closed'];
        // delete secondObj['Browser Logs'];

        // const emptyObject = {};
        // obj = { ...emptyObject };
        // return obj;

        obj['Open Tabs'] = [];
        obj['Recently Closed'] = [];
        obj['Browser Logs'] = [];

        // return obj;
    }
}

 

0
KatAngelova avatar KatAngelova 2 Точки

Thanks, it looks a lot cleaner now

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