Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Icakiss avatar Icakiss 0 Точки

03. Plant Discovery Final Exam

Условието на задачата пише ясно : Note: If any of the command is invalid, print "error"

Загубих един час, докато не ми казаха да погледна слидо.

И пак я докарах само до 60/100.

function solve(arr) {
    let n = arr.shift()
    let obj = {}
    let countRatings = {}
    for (let i = 1; i <= n; i++) {
        let line = arr.shift().split('<->')
        let [plant, rare] = [...line]
        rare = Number(rare)
        if (obj.hasOwnProperty(plant)) {
            obj[plant][0] += rare
        } else {

            obj[plant] = [rare]
        }
    }
    line = arr.shift()
    while (line != "Exhibition") {
        line = line.split(': ')
        let [comm, plantThings] = [...line]
        plantThings = plantThings.split(' - ')
        
     if(obj.hasOwnProperty(plantThings[0])){   

        if (comm === 'Rate') {
            let [plant, rate] = [...plantThings]
            rate = Number(rate)
            if (obj[plant][1] == undefined) {
                obj[plant].push(rate)

            } else {
                obj[plant][1] += rate
            }


            if (countRatings.hasOwnProperty(plant)) {

                countRatings[plant] += 1
            } else {
                countRatings[plant] = 1
            }
        } else if (comm === 'Update') {
            let [plant, rare] = [...plantThings]
            rare = Number(rare)
            obj[plant][0] = rare
        } else if (comm === 'Reset') {
            let [plant] = [...plantThings]
            countRatings[plant] = 0
            obj[plant][1] = 0
        }
    } else {
        console.log('error');
    }
        line = arr.shift()
    }
    let array = Object.entries(obj)
    for (let line of array) {
        let i = array.indexOf(line)
        let name = line[0]
        let count = +countRatings[name]
        if (count != 0) {
            array[i][1][1] = +array[i][1][1] / count
        }
    }
 
    array = array.sort((a, b) => b[1][0] - a[1][0] || b[1][1] - a[1][1])

    console.log(`Plants for the exhibition:`)
    for (const line of array) {
        let name = line[0]
        console.log(`- ${name}; Rarity: ${line[1][0]}; Rating: ${(line[1][1]).toFixed(2)}`)


    }
}

 

Тагове:
0
JavaScript Fundamentals
Tzigoriyn avatar Tzigoriyn 44 Точки

Не ми достигна времето за тази, нещо сбъгясах.

Но погледни този твой ред:

if (obj.hasOwnProperty(plant)) {
            obj[plant][0] <span style="background-color:#ff0000">+</span>= rare

в заданието се казва - "If you receive a plant more than once, update its rarity."

Аз поскоро го разбирам че трябва да замениш стойността с новата, а не да я събираш с първат, с моя беден англиски update=актуализация, от чичоГошоПреводач ;).

 

if (comm === 'Rate') {
            let [plant, rate] = [...plantThings]
            rate = Number(rate)
            if (obj[plant][1]<span style="background-color:#ff0000">(на тази позиция вече имаш стойност)</span> == undefined) {
                obj[plant].push(rate)

Ти вече имаш обект, както и инпут защо го сравняваш с undefined.

Извини ме ако съм те объркал, най-вероятно ще получиш адекватен отговор от някой който ще ти помогне.

Тук обаче е момнта да попитам и аз да ли са верни насоките ми. За което благодаря предварително.

0
ZOROBOY avatar ZOROBOY 6 Точки

Колега, според мен си прав за събирането на разстенията, но има и още нещо. Мисля, че големия капан е в проверката за валидна команда.

0
10/08/2020 22:37:37
Tzigoriyn avatar Tzigoriyn 44 Точки

Моята одея е да го направя със switch-case, при което при невалидна команда, отива извън кейса с кое автоматично е направена тази проверка. Благодаря за вниманието!

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