【问题标题】:Different strings in if statementif 语句中的不同字符串
【发布时间】:2016-10-31 18:04:15
【问题描述】:

有人知道如何在 if...else 语句中检查相似的字符串吗?

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

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

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

【问题讨论】:

  • “将数组写入 if...else 语句”是什么意思?
  • 对不起,你的问题真的不清楚......我根本无法弄清楚你想要实现的目标
  • 我想创建一个变量作为数组,这样我就可以存储各种字符串。只想解决这个问题,不需要数组。
  • 我知道他想要达到的目标:他想查看数组中是否存在与“restricted reader”相似的值。这样他就不必担心人们必须键入特定的字符串。我现在正在整理答案。
  • 您的数据格式错误并且可能不安全(如您所知)。受限读者应该是一组用户 ID。它应该具有标准化名称,例如“memberGroups.restrictedReaders”。这应该是出于内部目的。为了便于查看,该组应具有可以翻译成人类语言的名称。长话短说,你需要重构。

标签: javascript arrays string if-statement


【解决方案1】:

我建议使用数组函数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;
}

【讨论】:

    【解决方案2】:

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

    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;
    

    我刚刚根据您的示例汇总了那个正则表达式,但我相信有更多正则表达式经验的人可以提出更好的。

    正如在其中一个 cmets 中提出的那样,这是处理此类数据的一种非常不安全的方式。您不能依赖人类可读的字符串来获取关键数据。特别是当它受到诸如拼写错误等问题的影响时。您应该尝试不同的方法。但如果由于某种原因你不能,这应该就足够了。

    【讨论】:

    • 谢谢!这正是我正在寻找的!基本上,SharePoint 处理所有权限并保护内容。即使管理员创建了错误的组名,用户也无法授予访问权限。这个 if...else 语句只是帮助我在前端创建文本以告诉用户他们是否有权访问。
    【解决方案3】:
    if(/resTrict/i.test('resTrICted') !== false) {
    
    
    }
    

    【讨论】:

    • 虽然这段代码 sn-p 可以回答这个问题,但它没有提供任何上下文来解释如何或为什么。考虑添加一两句话来解释你的答案。另外,请使用代码格式化语法来格式化你的代码 sn -p ;)
    猜你喜欢
    • 2018-03-09
    • 1970-01-01
    • 2015-12-02
    • 2016-07-17
    • 1970-01-01
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    相关资源
    最近更新 更多