Я использую API изображений, чтобы получить некоторую информацию об изображении, и я хочу создать массив с уникальными именами авторов для каждого возвращаемого изображения. Я использую distinct
Rx JS, чтобы попытаться сделать это, но сейчас все объекты возвращаются.
Вот как выглядят данные API:
[
{
"id": "117",
"author": "Daniel Ebersole",
"width": 1544,
"height": 1024,
"url": "https://unsplash.com/photos/Q14J2k8VE3U",
"download_url": "https://picsum.photos/id/117/1544/1024"
},
{
"id": "118",
"author": "Rick Waalders",
"width": 1500,
"height": 1000,
"url": "https://unsplash.com/photos/d-Cr8MEW5Uc",
"download_url": "https://picsum.photos/id/118/1500/1000"
}
]
Вот часть кода, которую я упростил для облегчения чтения:
export class AppComponent {
authors; // using an array of strings for this doesn't work when I try to set it from the subscribe()
ngOnInit() {
const apiURI = 'https://picsum.photos/v2/list?page=2&limit=100';
const authors$ = this.http.get(apiURI).pipe(
distinct((item: Image) => item.author),
tap(author => console.log(author))
);
authors$.subscribe(authors => this.authors = authors);
}
constructor(private http: HttpClient) { }
}
export interface Image {
id: number;
author: string;
width: number;
height: number;
url: string;
download_url: string;
}
StackBlitz
Это странно для меня, так как есть еще один StackBlitz Я нашел с примерами, которые по сути делают то же самое с массивом объектов.
Я впервые работаю с оператором distinct
, поэтому я уверен, что что-то упустил, но я не смог понять, что это такое. Спасибо.