Angular2 .фильтр массив объектов

1

У меня есть код, как показано ниже:

        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? Является ли это возможным?

  • 2
    Если вам нужна группа groupBy , я предлагаю вам взглянуть на lodash и функцию groupBy .
Теги:
angular
ecmascript-6
filter

1 ответ

1

Попробуй это:

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

Подробнее о том, как использовать.filter:

qaru.site/questions/24652/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню