#angular #typescript
#angular #typescript
Вопрос:
У меня 50 ролей. Допустим, разработчик, менеджер, руководитель группы, ведущий разработчик, менеджер, помощник менеджера, старший менеджер и так далее. У каждой роли есть цвет. Например, JSON показан ниже
{"Manager":"red","Team Lead":"Orange","Manager":"pink","Assistant Manager":"Yellow}
Вывод API выглядит следующим образом
this.roles= ['Manager','Team Lead','Lead Developer', 'Manager']
мой желаемый результат должен быть таким
this.colors=['red','Orange','blue','pink']
как мне этого добиться?
Комментарии:
1. Я понимаю вашу проблему, и некоторые из них уже ответили на нее, но я думаю, вам следует обратить внимание на свой json, у вас не может быть объекта с дублирующимся ключом… И я вижу, что ваш «менеджер» записывается дважды.
2. У Manger не будет 2 цветов. Я просто написал это для примера. Каждая роль будет иметь один уникальный цвет
Ответ №1:
const colorsOfRoles = JSON.parse(YoursObjet);
this.colors = this.roles.map((role) => colorsOfRoles[role])
Я не уверен, чего вы хотите
Ответ №2:
Если вы работаете с компонентом, вызовите эту функцию onInit
, чтобы убедиться, что она будет вызвана перед первым отображением.
rolesWithColors = {'Manager':'red','Team Lead':'Orange','Manager':'pink','Assistant Manager':'Yellow'};
roles = ['Manager','Team Lead','Lead Developer', 'Manager'];
colors = [];
ngOnInit() {
this.findColors();
}
findColors() {
this.colors = [];
this.roles.foreach(role => {
this.colors = [...this.colors, this.rolesWithColors[role]];
});
}