【问题标题】:Angular 2 pipe to filter grouped arraysAngular 2管道过滤分组数组
【发布时间】:2016-07-27 04:25:07
【问题描述】:

我的 Angular2 应用程序上有一组数组,我用它们来构建一个分组列表,其中 *ngFor 在我看来:

[
  {
    category: 1,
    items: [{ id: 1, name: "helloworld1" }, { id: 2, name: "helloworld2" }]
  },
  {
    category: 2,
    items: [{ id: 3, name: "helloworld3" }, { id: 4 }]
  },
  {
    category: 3,
    items:[{ id: 5 }, { id: 6 }]
  }
]

我还有一个布尔值,当它为真时,应该只过滤具有name 属性的项目。如果一个组没有任何符合此条件的项目,则不应通过。所以如果布尔值为真,结果将如下:

[
  {
    category: 1,
    items: [{ id: 1, name: "helloworld1" }, { id: 2, name: "helloworld2" }]
  },
  {
    category: 2,
    items: [{ id: 3, name: "helloworld3" }]
  }
]

如何实现管道来实现这种结果?

【问题讨论】:

    标签: arrays filter angular


    【解决方案1】:

    http://plnkr.co/edit/je2RioK9pfKxiZg7ljVg?p=preview

    @Pipe({name: 'filterName'})
    export class FilterNamePipe implements PipeTransform {
    transform(items: any[], checkName: boolean): number {
      if(items === null) return [];
      let ret = [];
      items.forEach(function (item) {
        let ret1 = item.items.filter(function (e) {
          return !checkName || (checkName && (e.name !== undefined));
        });
        if(ret1.length > 0) {
          item.items = ret1;
          ret.push(item);
        }
        });
      return ret;
      }
    }
    

    【讨论】:

    • 谢谢!这正是我想要的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2017-10-12
    • 2019-06-05
    • 1970-01-01
    相关资源
    最近更新 更多