【问题标题】:Angular2 filter array of objectsAngular2过滤对象数组
【发布时间】:2023-03-14 12:56:02
【问题描述】:

我将从添加代码开始,我得到的结果,最后我想得到什么,如果可能的话。

我得到的结果是 Array[object, object, ...] 其中 object 是 Array

export class SomeService {
           ....
           .... 
     public someFunction(): MyObject[]{
         Observable
            .forkJoin(this.userItemsA(userId), this.userItemsB(userId), etc)
             .filter(each => {
                      for (let array of each) {
                            let x: any = <any> array;
                               return x.length > 0;
                            }
                        })
             .map(result => {
                   return result;
              })
            .subscribe(result => {
                  /// what i would like to do for example assuming only 1st array has items
                  /// do something here with result[0] 
                  /// return MyObject[] from result[0]
        });
    ....
    }
}

过滤器结构

我正处于 angular2 和响应式编程的早期学习阶段,我想要进行过滤,以便映射结果仅是具有至少 1 个项目的数组。

谢谢

【问题讨论】:

  • .filter(each =&gt; ...中的数据结构是什么?
  • 我已经上传了过滤器的结构,谢谢

标签: angular typescript rxjs reactive-programming rxjs5


【解决方案1】:

用.map代替.filter

.map(each => {
    return each.filter(array => array.length > 0)
}

【讨论】:

    【解决方案2】:

    很遗憾,这不适用于forkJoin。它的作用是将几个 Observable 连接成 single Observable,因此如果它们中的任何一个被过滤掉,整个连接的 Observable 都会被中断/过滤。

    正如@Martin 所说,您必须在map 分支中进行过滤。

    【讨论】:

      猜你喜欢
      • 2017-09-06
      • 2017-06-21
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 2018-09-28
      • 2016-03-28
      • 2022-11-27
      • 2017-05-08
      相关资源
      最近更新 更多