如何将顺序发出的数据转换为单个数组

How to convert sequentially emitted data to a single array

所以,我正在使用 ngrx 存储来获取数据。一旦我 select 属性 我想要的商店,然后我订阅它以获得可观察的流。 我的数据包含对象数组。所以在这个对象数组中,我必须对每个对象的一些属性做一些修改。

为此,我使用 rxjs 库的 'from()' 运算符将我的对象数组转换为顺序可观察对象,然后将其分配给新的可观察对象。使用这个新的 Observable 对象,我应用 map 函数进行修改,最后再次返回一个新的 Observable 对象。 到这一步一切正常。 问题发生了,当我订阅这个新修改的可观察对象时,它按顺序发出值而不是整个对象数组。 但是我想要修改对象数组。

this.statusObj = this.store.select(s => s.userStore.data);
this.statusObj.subscribe(rslt => {
    this.usrArr = rslt;
})

this.newstatusObj = from(this.usrArr);
this.newstatusObj2 = this.newstatusObj
    .pipe(map(() => {
        //////some modifications
        return
    }))

this.newstatusObj2.subscribe(val => {
    console.log(val);  //this line is emitting sequential values..but i want array of objects
})

您不需要使用 .from(),它将根据您的数组将您的数据转换为多个发射。由于您的商店已经为您提供了一个包含要修改的数据的可观察对象,只需使用 .map() 来修改它们,如下所示:

this.store.select(s => s.userStore.data)
    .pipe(map((rslt)=>{
        //DO YOUR MODIFICATION HERE.
    }))
    .subscribe(val=>{
        console.log(val) // now your data is in array of objects
    })