【问题标题】:Angular2 .filter arrays of objectsAngular2 .filter 对象数组
【发布时间】:2018-04-16 05:46:59
【问题描述】:

我有如下代码:

        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 方法做到这一点?有可能吗?

【问题讨论】:

  • 如果是你需要的groupBy,建议你看看lodash和groupBy函数。

标签: javascript angular filter ecmascript-6


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2023-03-14
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    相关资源
    最近更新 更多