Как преобразовать последовательно выдаваемые данные в один массив
Итак, я использую ngrx store для получения данных. После того, как я выбрал желаемое свойство в магазине, после этого я подписался на него, чтобы получить наблюдаемый поток. Мои данные содержат массив объектов. Таким образом, в этом массиве объектов я должен внести некоторые изменения в некоторые свойства каждого объекта.
Поэтому для этого я преобразовал свой массив объектов в последовательные наблюдаемые с помощью оператора from() из библиотеки rxjs, а затем назначил его в новый объект Observable. С этим новым объектом 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
})
1 ответ
Вам не нужно использовать .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
})