我想捕获字符串中是否包含值。我有一个有限的值列表要匹配逗号分隔的可变长度字符串,可以是400个字符长。任何出现的字符串只会出现一次,不会有任何重复,也不会在字符串中有两个静态列表项实例,例如,字符串将永远不会同时包含“Poor”和“Ultimate”。
静态物品清单
可怜的公平好更好的最佳终极
要搜索的字符串
Cake,Good,Pickles,System,Tires
我意识到我可以使用indexOf和一堆IF语句,但我想知道是否有更好的做法,比如将静态列表分配给数组
var myList=new Array [“Poor”, “Fair”, “Good”, “Better”, “Best”, “Ultimate”];
我不知道如何循环遍历数组和字符串以返回找到的值,例如,在此示例中为“ Good ”。这样做的最佳方式是什么 - 最有效,最快速和最容易维护(假设这些并不矛盾)?
由于
答案 0 :(得分:2)
是的,在我看来,你是以正确的方式。看:
var myList= ["Poor", "Fair", "Good", "Better", "Best", "Ultimate"];
var stringList = "Cake,Good,Pickles,System,Tires";
for (var i = 0; i < myList.length; i++)
{
if (stringList.indexOf(myList[i]) > -1)
{
window.alert("Contains: " + myList[i]);
break;
}
}
如果您确保这些值匹配并且您不需要对列表中的该字符串进行任何验证,那么这个简单的循环 - in vanilla js - 将起作用。快速,高效且易于维护。
答案 1 :(得分:1)
根据您的需要,您可以使用每个或每个的数组函数:
var myList=['Poor', 'Fair', 'Good', 'Better', 'Best', 'Ultimate'];
var myString = "Cake,Good,Pickles,System,Tires";
var valContainedInString = [];
myList.forEach(isInString);
function isInString(pVal, pIndex, pArray) {
if(myString.indexOf(pVal) >= 0) {
valContainedInString.push(pVal);
}
}
for(var i = 0; i < valContainedInString.length; i++) {
console.println(valContainedInString[i]);
}
这将输出:&#34; good&#34;。