У меня есть такая структура в моем угловом проекте:
export interface Campo {
id?: number;
nome?: string;
tabela?: Tabela;
campos?: Campo[];
}
export interface Tabela {
id?: number;
name?: string
arquivo?: Arquivo;
}
export interface Arquivo {
id?: number;
name?: string;
tabelas?: Tabela[];
}
, т. Е. У «Арквиво» много «Табел», а у «Табелы» много «Кампо».Я подписываюсь на сервис, который возвращает все «Campo», и я сохраняю его в переменной «campos».Этот сервис возвращает более 200 «Кампос», связанных примерно с 10 «Табелами» и только 3 «Арквивос».
Я хочу вернуть все уникальные «Арквиво» (т.е. все 3 «Арквиво»).
Когда я делаю:
let arquivos = this.campos
.map(campo => campo.tabela.arquivo.id)
.filter((value, index, self) => self.indexOf(value) === index);
Возвращает
[1001, 1002, 1003]
Так что это идентификаторывсе 3 "Arquivo", которые у меня есть.Но я не хочу идентификаторы, я хочу объекты "Arquivo".Когда я пытаюсь:
let arquivos = this.campos
.map(campo => campo.tabela.arquivo)
.filter((value, index, self) => self.indexOf(value) === index);
Возвращает более 200 регистров, потому что у меня более 200 «Кампос», и он не может знать, является ли «Аркивос» уникальным или нет.
Как я могу это сделать?