如何将顺序发出的数据转换为单个数组
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
})
所以,我正在使用 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
})