Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript indexOf-列表/数组中的精确匹配_Javascript_Jquery_Arrays_List - Fatal编程技术网

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,找不到精确匹配的答案。

我决定使用javascript indexOf来确定列表/数组中是否存在值。这对我来说很有用,直到我意识到我需要在列表中找到一个精确的匹配项

下面是我的示例代码:

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';
});

警报(匹配)
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小时。我是个笨蛋。