我猜这更像是一个逻辑问题而不是 RxJS 问题,但我不知道如何解决它。
[输入 1]
从城市流中,我将收到 1 或 2 个对象(城市 1 或城市 2 是测试装置)。
如果只有一种语言可用,则为 1 个对象,同时具有两种语言的城市为 2 个对象。
[输入 2] 我也有一个 selectedLanguage(“fr”或“nl”)
【算法】 如果对象的语言对应selectedLanguage,我会采摘城市。当我收到 2 个对象(cities2)时,这适用于我的 RxJS 但是因为我也可以收到 1 个对象,所以过滤器不是正确的做法
[问题] 如果只有一个对象存在,我是否应该首先检查城市流并添加另一个对象。或者有什么更好的 RxJS/逻辑选项?
const cities1 = [
{city: "LEUVEN", language: "nl"}
];
const cities2 = [
{city: "BRUSSEL", language: "nl"},
{city: "BRUXELLES", language: "fr"}
];
const selectedLang = "fr"
const source$ = from(cities1);
const result = source$.pipe(
mergeMap((city) => {
return of(selectedLang).pipe(
map(lang => {
return {
lang: city.language,
city: city.city,
selectedLang: lang
}
}),
filter(a => a.lang === selectedLang),
pluck('city')
)
}
)
);
result.subscribe(console.log)