javascript indexOf-列表/数组中的精确匹配
我决定使用javascript indexOf来确定列表/数组中是否存在值。这对我来说很有用,直到我意识到我需要在列表中找到一个精确的匹配项 下面是我的示例代码:javascript indexOf-列表/数组中的精确匹配,javascript,jquery,arrays,list,Javascript,Jquery,Arrays,List,我决定使用javascript indexOf来确定列表/数组中是否存在值。这对我来说很有用,直到我意识到我需要在列表中找到一个精确的匹配项 下面是我的示例代码: if (['eu', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW'].indexOf('fr') > -1) { 上述代码将fr与fr CA“匹配”,这对我来说是个问题,因为我必须与fr完全匹配,而与fr-CA不匹配 我原以为这是直截了当的,但我已经搜索了SO和google,找不到精确匹配的答案。
if (['eu', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW'].indexOf('fr') > -1) {
上述代码将fr与fr CA“匹配”,这对我来说是个问题,因为我必须与fr完全匹配,而与fr-CA不匹配
我原以为这是直截了当的,但我已经搜索了SO和google,找不到精确匹配的答案。试试这个:
var match = ['eu', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW'].filter(function(item){
return item === 'eu';
});
console.log(match); // an array of matches, only one item in this case
虽然你可以很好地工作。也许你错过了什么
这是错误的,您可以使用:
arr.indexOf(searchElement[,fromIndex=0])
indexOf
使用严格的
相等(与=
运算符或三重相等运算符使用的方法相同)
所以
['eu','fr-CA','lt','sv','zh-CN','zh-TW'].indexOf('fr')
返回-1
您可以使用该方法。一旦找到第一个匹配项,它将停止搜索,如果没有匹配项,则返回false:
var-arr=['eu','fr-CA','lt','sv','zh-CN','zh-TW'];
var match=arr.some(函数(el){
返回el=='zh CN';
});
警报(匹配)当比较数组值等于数组中的相同值时,code>indexOf
。那么只有它返回true,否则它总是返回false
如果要在数组值中搜索子字符串,请使用以下函数。它搜索数组中的子字符串并返回数组中的位置
function searchStringInArray (str, strArray) {
for (var j=0; j<strArray.length; j++) {
if (strArray[j].match(str)) return j;
}
return -1;
}
var res = searchStringInArray('fr',['eu', 'fr-CA', 'lt', 'sv', 'zh-CN', 'zh-TW']);
alert(res);
函数searchStringInArray(str,strArray){
对于(var j=0;jWait,什么,你确定吗?['eu','fr CA','lt','sv','zh CN','zh TW'])。indexOf('fr')
给你-1
这是不可能的,这就是为什么你找不到一个wseryes。我刚刚意识到。我需要睡一会儿。你基本上已经实现了.indexOf()
这里的行为:P@Ja͢嘿嘿,这是一个更昂贵的版本,从性能上看……这一个对我有效,indexOf()似乎没有检查确切的字符串,但这一个有。天哪!你是对的。这是一个很好的例子,说明为什么我不能每天睡2小时。我是个笨蛋。