Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как это решить? (https://javascript.ru/forum/misc/76280-kak-ehto-reshit.html)

Rude 21.12.2018 08:41

Как это решить?
 
Как это сделать?

Есть объект тикет (ticket) с атрибутами impact и priority. Обязательно заполнен хотя бы один из них (могут быть
заполнены оба атрибута).
Требуется написать скрипт, вычисляющий значение title по следующему правилу: если заполнен impact, то
пишется "Влияние " и указывается значение impact;
если заполнен priority, то "Приоритет " и указывается значение priority; если заполнены оба, то указывается и
влияние и приоритет через запятую.
Примеры: "Влияние 1"; "Приоритет 2"; "Влияние 3, приоритет 4".

рони 21.12.2018 09:34

Rude,
Object.entries()

Nexus 21.12.2018 09:47

рони, так наименование свойств же известно, зачем Object.entries() использовать?

var titles = {
        impact: 'Влияние',
        priority: 'Приоритет'
    },
    tickets = [{
        priority: '',
        impact: 1
    }, {
        priority: 0,
        impact: 1
    }, {
        priority: 2,
        impact: 1
    }].map(function(ticket) {
        return ticket.title = Object.keys(titles).map(function(key) {
            return !ticket[key].toString().length ?
                null :
                titles[key] + ': ' + ticket[key];
        }).filter(function(val) {
            return !!val;
        }).join(', '), ticket;//.map и .filter лучше на .reduce заменить
    });

console.log(tickets);


Rude, вы такие темы в разделе "Работа" в следующий раз создавайте.

рони 21.12.2018 09:48

Rude,
или массив и два if

рони 21.12.2018 09:51

Цитата:

Сообщение от Nexus
зачем Object.entries() использовать?

можно любой цикл, entries было как один из вариантов

Rude 21.12.2018 09:59

Цитата:

Сообщение от Nexus
вы такие темы в разделе "Работа" в следующий раз создавайте.

Учту, я тут новенький.

Спасибо за помощь:thanks:

рони 21.12.2018 10:04

:write:
var titles = {
        impact: 'Влияние',
        priority: 'Приоритет'
    },
ticket = {impact: 1,
          priority: 2},
title =  Object.entries(ticket).map( ([a,b]) => `${titles[a]} ${b}`);
alert(title);


Часовой пояс GMT +3, время: 19:29.