Typescript 我有一个可观察的对象流,正在尝试返回一个可观察的<;字符串>;来自数组成员的流

Typescript 我有一个可观察的对象流,正在尝试返回一个可观察的<;字符串>;来自数组成员的流,typescript,rxjs,rxjs6,Typescript,Rxjs,Rxjs6,我需要过滤对象列表,并从string[]成员创建一个不同的可观察流。打字稿2.9.2 interface Product2 { id: number; categories: string[]; } const products: Product2[] = [ {id: 1, categories: ['abc', 'def']}, {id: 2, categories: ['def', 'xyz']} ]; const products$: Observable<P

我需要过滤对象列表,并从string[]成员创建一个不同的可观察流。打字稿2.9.2

interface Product2 {
  id: number;
  categories: string[];
}

const products: Product2[] = [
   {id: 1, categories: ['abc', 'def']},
   {id: 2, categories: ['def', 'xyz']}
];
const products$: Observable<Product2> = from(products);

const allCategories$: Observable<string|void> = products$
  .pipe(
      map((val: Product2) => { from(val.categories).subscribe(); } ),
      distinct()
  );

console.log('logging categories');
allCategories$.subscribe(val => console.log(val));
接口产品2{
id:编号;
类别:字符串[];
}
const products:Product2[]=[
{id:1,类别:['abc','def']},
{id:2,类别:['def',xyz']}
];
const products$:可观察=来自(产品);
const allCategories$:可观察=产品$
.烟斗(
map((val:Product2)=>{from(val.categories.subscribe();}),
不同的()
);
log(“日志记录类别”);
allCategories$.subscribe(val=>console.log(val));

预期的“abc”、“def”、“xyz”未定义。

map
运算符要求内部函数返回值。您返回的是
undefined
,因为那里没有
return
语句

无论如何,您可以使用
mergeMap
将类别数组展开为单独的排放,然后
distinct()
将完成其工作:

const allCategories$: Observable<string|void> = products$
  .pipe(
    mergeMap((val: Product2) => val.categories),
    distinct()
  );
const allCategories$:可观=产品$
.烟斗(
合并映射((val:Product2)=>val.categories),
不同的()
);

map
运算符要求内部函数返回值。您返回的是
undefined
,因为那里没有
return
语句

无论如何,您可以使用
mergeMap
将类别数组展开为单独的排放,然后
distinct()
将完成其工作:

const allCategories$: Observable<string|void> = products$
  .pipe(
    mergeMap((val: Product2) => val.categories),
    distinct()
  );
const allCategories$:可观=产品$
.烟斗(
合并映射((val:Product2)=>val.categories),
不同的()
);