Así que esto es lo que estoy tratando de resolver:
class ViewRole { name description constructor(name, description) { this.name = name; this.description = description; } } class NewRole { name; description; constructor(name, description) { this.name = name; this.description = description; } } var armadilloRoles = [ new NewRole('Billing', 'armadillo.organization.billing'), new NewRole('Doctor', 'armadillo.organization.doctor'), new NewRole('Nurse Practitioner', 'armadillo.organization.nursePractitioner'), new NewRole('Patient', 'armadillo.microurb.billing'), new NewRole('Microurb admin', 'armadillo.organization.admin'), new NewRole('Microurb admin', 'armadillo.organization.admin'), new NewRole('Microurb billing', 'armadillo.organization.billing'), new NewRole('Respiratory therapist', 'armadillo.microurb.respiratoryTherapist'), new NewRole('Microurb commercial contact', 'armadillo.microurb.practiceGrowthDirector') ]; var viewRoles = []; for (var i = 0; i < armadilloRoles.length; i++) { const role = armadilloRoles[i]; const viewRoleDto = new ViewRole(role.name, role.description); // if (viewRoleDto[i].description.startsWith('armadillo.organization.')) { // viewRoles.push(viewRoleDto[i]); // } viewRoles.push(viewRole); } console.log(viewRoles); He probado una variedad de formas de implementar un condicional if con un método startsWith() .
Quiero devolver solo los que tienen armadillo.organization. como la descripción.
Una buena manera sería usar reduce así:
const matches = armadilloRoles.reduce( (prev, cur) => cur.description.startsWith("armadillo.organization") ? [...prev, cur] : prev, [] );