У меня есть enum , исходящий из бэкэнда
Вот перечисление
export enum InquiryStatus {
_0 = 0,
_1 = 1,
_2 = 2,
}
Я создаю перечисление для использования в раскрывающемся списке, например
export enum InquiryStatuses {
Pending = InquiryStatus._0,
Quoted = InquiryStatus._1,
Lost = InquiryStatus._2,
}
И заполнить массив, как это
filter: SelectItem[] = [];
ngOnInit(): void {
this.filter = [
{ label: 'Pending', value: InquiryStatuses.Pending },
{ label: 'Quoted', value: InquiryStatuses.Quoted },
{ label: 'Lost', value: InquiryStatuses.Lost },
];
}
Мне нужно сделать заполнение в функции. IE senв enum и имя массива в качестве параметров и возвращать заполненные данные в массив. Как я могу сделать это правильно?
Я отредактировал вопрос @AvinKavish



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Обычный способ сделать это может быть таким:
this.filter = Object.keys(InquiryStatuses)
.filter(k => typeof InquiryStatuses[k] === 'number')
.map(label => ({ label, value: InquiryStatuses[label] })))
Поскольку Typescript «удваивает» свойства в перечислении при преобразовании в объект, мы должны сначала отфильтровать его.
Поскольку юрзуй написал хороший ответ, я просто добавлю, как я делал что-то подобное.
export class EnumHelper {
/** Returns array of objects based on enum values.
* Every object has text and value.
* Formats enum names if they are in pascal case.*/
public static getTextAndValue(type: any, pascalCase: boolean = false): object[] {
const result: Array<object> = [];
for (var value in type) {
if (Number.isInteger(type[value])) {
result.push({ value: type[value], text: pascalCase ? value.replace(/([A-Z])/g, ' $1').trim() : value });
}
}
return result;
}
}
«Мне нужно сделать заполнение в функции» Ваше требование не ясно.