【问题标题】:Matching value of an array regardless of position in javascript无论javascript中的位置如何,都匹配数组的值
【发布时间】:2016-03-18 15:21:16
【问题描述】:

我正在尝试使用以下代码将字符串与数组进行比较:

var str = "ML00000";
var arr = ["MC", "CV", "ML", "LV"];
for (var i = 0, len = arr.length; i < len; ++i) 
{
   if (str.indexOf(arr[i]) != -1) 
   {
    document.write("YES");
   }
   else
   {
   document.write("NO");
   }    
}

它当前返回“NO NO YES NO” - 当找到匹配的字符串时,我希望输出为 YES 或 NO。

对此的任何帮助将不胜感激!

谢谢你 - 马特

【问题讨论】:

    标签: javascript arrays indexof


    【解决方案1】:

    你可以使用Array.some():

    var exists = arr.some(function(item) {
        return str.indexOf(item) != -1;
    });
    

    如果至少有一个元素返回 true,则此方法返回 true,然后您可以应用您的逻辑:

    if (exists) {
        document.write("YES");
    }
    else {
       document.write("NO");
    }  
    

    希望对你有帮助。

    【讨论】:

    • 只需更改str.indexOf(item) != -1;
    • ES6: arr.some(x =&gt; str.includes(x))
    【解决方案2】:
    var str = "LV00000";
    var arr = ["MC", "CV", "ML", "LV"];
    for (var i = 0, len = arr.length; i < len; ++i) 
    {
       if (str.indexOf(arr[i]) != -1) 
       {
        document.write("YES");
        break ;
       }
       if(i==len-1)  document.write("NO");
    }
    

    【讨论】:

    • 像魅力一样工作。谢谢!
    • 欢迎,表示感谢的正确方式是“接受”回答并投赞成票。
    猜你喜欢
    • 2021-06-21
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    • 2015-07-01
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多