Angular2过滤器对象数组

时间:2016-11-07 12:13:37

标签: angular typescript rxjs reactive-programming rxjs5

我将首先添加代码,我得到的结果以及最终我想获得的内容以及是否可能。

我得到的结果是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]
        });
    ....
    }
}
  

过滤结构

filter structure

我正处于angular2和反应式编程的早期学习阶段,我想要的是过滤,以便地图结果只是至少有一个项目的数组。

谢谢

2 个答案:

答案 0 :(得分:1)

而不是 function GenerateTable(data) { document.getElementById('divExport').style.display = ""; if (i == 0) { $('#oReportContractDetailsByCA').append("<tr style='background-color:" + bkColor + ";'><td><img src='../../../_layouts/15/1033/IMAGES/eContracts/checked-checkbox-512.jpg'></img></td></tr>") } 使用.filter

.map

答案 1 :(得分:1)

不幸的是,这不适用于forkJoin。它的作用是将几个Observable连接到单个 Observable,因此如果它们中的任何一个被过滤掉,整个连接的Observable会被中断/过滤。

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