如何将一种类型的 Observable 转换为另一种类型的 Observable

How to turn an Observable of a type into an Observable of another type

我有一个 Angular 应用程序使用 NGRX 来管理应用程序状态。 我有一个选择器 return 我是一个 Observable。

export const mySelector = createSelector(state, (state: IState) => state.field.array);

Observable returned 具有以下格式:{name:string; age:number}[]

我需要做的是将该数据格式转换为另一种数据格式,例如{firt-name:string}。 我不明白我应该使用什么运算符。

我的目标是将新数据分配给订阅内的一个变量,如下所示:

myVariable: {firt-name:string};

this.store.pipe(select(mySelector))
         .pipe(//here I should transform the data format)
         .subscribe(result => {myVariable = result})

您可以使用 map:

function mapper(data: { name: string; age: number }[]) {
  return data.map(({ name, age }) => ({
    "first-name": name,
    age
  }));
}

this.store
  .pipe(
    select(mySelector),
    map(mapper)
  )
  .subscribe(result => {
    myVariable = result;
  });

或在您的选择器中执行该转换:

function mapper(data: { name: string; age: number }[]) {
  return data.map(({ name, age }) => ({
    "first-name": name,
    age
  }));
}

this.store
  .pipe(
    select(
      pipe(
        mySelector,
        mapper
      )
    )
  )
  .subscribe(result => {
    myVariable = result;
  });