Как преобразовать последовательно выдаваемые данные в один массив

Итак, я использую 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
    })
Другие вопросы по тегам