You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选并转换数组中description以armadillo.organization.开头的类实例

解决方案

我看了你的代码,问题出在你注释掉的判断逻辑里——你错误地用了viewRoleDto[i]来访问属性,但viewRoleDto是每次循环生成的单个ViewRole实例,不是数组,所以这么写肯定行不通。另外你最后还不小心把原NewRole实例rolepush进去了,而不是转换后的viewRoleDto,这也是个小疏漏。

下面给你两种可行的解决方式:

方式一:修正原有for循环逻辑

直接在循环里对生成的viewRoleDto做判断,符合条件再加入结果数组:

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);
  // 直接判断当前viewRoleDto的description属性
  if (viewRoleDto.description.startsWith('armadillo.organization.')) {
    viewRoles.push(viewRoleDto);
  }
}
console.log(viewRoles);

方式二:用ES6数组方法简化代码(推荐)

用filter先筛选出符合条件的NewRole实例,再用map转换成ViewRole,代码更简洁易读:

// 类定义部分和armadilloRoles数组不变,省略重复代码
var viewRoles = armadilloRoles
  .filter(role => role.description.startsWith('armadillo.organization.'))
  .filter((role, index, self) => 
    // 额外可选:如果需要去重(比如你有重复的Microurb admin),可以加这层过滤
    self.findIndex(r => r.name === role.name && r.description === role.description) === index
  )
  .map(role => new ViewRole(role.name, role.description));

console.log(viewRoles);

注意:第二行的filter是可选的,如果你需要去除数组里重复的角色实例,可以加上;不需要的话直接去掉这一行即可。

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 18:42:31