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

如何在if条件判断语句中仅匹配识别字符串的部分内容

解决方案

你可以通过以下几种方式实现字符串前缀匹配,替换原有全等判断即可:

方法1:使用ES6+内置的startsWith方法(最推荐)

这个方法是专门用来判断字符串是否以指定内容开头的,语法最简单直观:
修改后的循环代码如下:

var armadilloRoles = [
  { name: 'Billing', description: 'armadillo.organization.billing' },
  { name: 'Doctor', description: 'armadillo.organization.doctor' },
  { name: 'Nurse Practitioner', description: 'armadillo.organization.nursePractitioner' },
  { name: 'Patient', description: 'armadillo.organization.patient' },
  { name: 'Aluna admin', description: 'armadillo.microurb.admin' },
  { name: 'Aluna billing', description: 'armadillo.microurb.billing' },
  { name: 'Respiratory therapist', description: 'armadillo.microurb.respiratoryTherapist' },
  { name: 'Aluna commercial contact', description: 'armadillo.microurb.practiceGrowthDirector' }
];

var viewRoles = [];

for (var i = 0; i < armadilloRoles.length; i++) {
  // 替换原来的全等判断为startsWith
  if (armadilloRoles[i].description.startsWith('armadillo.organization.')) {
    viewRoles.push(armadilloRoles[i]);
  }
}

viewRoles;

更简洁的写法可以直接用数组的filter方法完成筛选,不需要手动写循环:

const viewRoles = armadilloRoles.filter(item => 
  item.description.startsWith('armadillo.organization.')
)

方法2:兼容旧浏览器的indexOf方法

如果需要兼容不支持ES6的旧环境,可以用indexOf判断指定字符串的出现位置是否为0(即出现在最开头):

if (armadilloRoles[i].description.indexOf('armadillo.organization.') === 0) {
  viewRoles.push(armadilloRoles[i]);
}

方法3:正则匹配

也可以用正则的开头匹配符^实现前缀校验,注意正则里的.需要加反斜杠转义:

if (/^armadillo\.organization\./.test(armadilloRoles[i].description)) {
  viewRoles.push(armadilloRoles[i]);
}

原代码问题说明

你之前用===全等判断要求description字段的完整内容和前缀完全一致,但实际符合要求的字段尾部还有billing/doctor等后缀,所以永远无法匹配到结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:45:03