Angular2 .filter对象数组

时间:2017-11-03 13:18:21

标签: javascript angular filter ecmascript-6

我的代码如下:

        ngOnInit() {
    this.tenantPackagesService.getTenantPackages().takeUntil(this.destroyed).subscribe();
    this.tenantPackagesService.tenantPackagesObs.filter(packages => !!packages).takeUntil(this.destroyed).subscribe(packages => {

        this.selectedPackage;

        let flags = {};
        this.packages = packages
            .filter(function (entry) {
                if (flags[entry.id]) {
                    return false;
                }
                flags[entry.id] = true;
                return true;
            })
            .map(o => { return { label: `${o.id}`, value: o } });

        // Versions of package
        this.versions = packages
            // Here I need filter 
            .map(o => { return { label: `${o.version}`, value: o } });
    })
}

有一个带包的对象数组。每个包都有版本。有很多包含相同名称但版本不同的包。我按唯一名称过滤了包,现在我需要映射不同版本的选定包(this.selectedPackage)。 所以,如果我选择package1,我只需要获得与该包相关联的版本。 如何用.filter方法做到这一点?有可能吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

const filteredPackage = this.versions.filter(function (el) {
  return el.version === this.selectedPackage;
});

有关如何使用.filter的更多细节:

https://stackoverflow.com/questions/2722159/javascript-how-to-filter-object-array-based-on-attributes