У меня есть код, как показано ниже:
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? Является ли это возможным?
Попробуй это:
const filteredPackage = this.versions.filter(function (el) {
return el.version === this.selectedPackage;
});
Подробнее о том, как использовать.filter:
groupBy
, я предлагаю вам взглянуть наlodash
и функциюgroupBy
.