if语句中的不同字符串

时间:2016-10-31 18:04:15

标签: javascript arrays string if-statement

任何人都知道如何检查if ... else语句中的类似字符串吗?

下面的代码是检查用户是否在自定义受限权限组中,以便我可以在用户界面中创建指标。

if ((myMemberships.indexOf(Sitetitle + "  Restricted  Readers")>=0) {
        oInstance.model.dcn[0]._recordSet[i].isMember=false;

但是我想编写一个数组来存储 Sitetitle +"的不同字符串组合。受限制的读者" ,例如SiteTitle受限读者,SiteTitleRestrictedReader(s),SiteTitle限制读者。因此,我可以阻止管理员在创建组名时输入组名错误,最终导致代码失败。

3 个答案:

答案 0 :(得分:2)

我建议使用数组函数Array.some MDN.您可以执行以下操作:

function isRestrictedReader(member){
   return /Restricted\s+Readers/.test(member); 
   // I'm using a RegExp, but you could use other methods.
   // it just has to return a boolean.
}

if (myMemberships.some(isRestrictedReader)){
   oInstance.model.dcn[0]._recordSet[i].isMember=false;
}

答案 1 :(得分:1)

如果您不想重构(稍后会详细介绍),您可以使用正则表达式来测试字符串是否与您要查找的模式匹配。

var regex = new RegExp(Sitetitle + "\s*restrict(?:ed)?\s*reader[s]?", "i");

if ((myMemberships.some(function(text){ return text.match(regex) }) {
        oInstance.model.dcn[0]._recordSet[i].isMember=false;

这个正则表达式我刚刚根据你的例子汇总在一起,但我确信有人对正则表达式有更多经验可以想出一个更好的表达式。

正如其中一条评论所述,这是处理这类数据的一种非常不安全的方法。对于关键数据,您不能依赖人类可读的字符串。特别是当它受到错别字等事情的影响时,你应该尝试不同的方法。但如果由于某种原因你不能,那就足够了。

答案 2 :(得分:1)

if(/resTrict/i.test('resTrICted') !== false) {


}