Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.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中的搜索字符串_Javascript_Jquery_Arrays_String - Fatal编程技术网

数组javascript中的搜索字符串

数组javascript中的搜索字符串,javascript,jquery,arrays,string,Javascript,Jquery,Arrays,String,我正在寻找一个简单的函数来检查数组中是否有特定的字符串 function checkRegion(departement){ var region = ''; if(alsace.indexOf(departement) != -1) { region = "alsace"; } if(aquitaine.indexOf(departement) != -1){ region = "aquitaine"; }

我正在寻找一个简单的函数来检查数组中是否有特定的字符串

function checkRegion(departement){
    var region = '';

    if(alsace.indexOf(departement) != -1)
    {
        region = "alsace";
    }
    if(aquitaine.indexOf(departement) != -1){
        region = "aquitaine";
    }
    if(auvergne.indexOf(departement) != -1){
        region = "auvergne";
    }
    if(basseNormandie.indexOf(departement) != -1){
       region = "basse-normandie";
    }
    if(iledefrance.indexOf(departement) != -1){
        region = "ile-de-france";
    }else{
        region = 'undennnnnfined';
    }

    return region;
};
有解决办法吗


谢谢

您的问题在于使用连续的
if
语句,而没有将它们链接在一起进行完整检查

按照您的方式执行,代码实际上完全忽略了所有
if
语句,但最后一条语句除外

所以,如果
iledefrance.indexOf(department)!=-1
给出
,它将始终执行
中的代码,否则
,这意味着它将设置
区域='undennnfined'


注意:

function checkRegion(departement) {
    var
       regions = [alsace, aquitaine, auvergne, basseNormandie, iledefrance],
       regionsNames = ["alsace", "aquitaine", "auvergne", "basseNormandie", "iledefrance"];

    for (var i = 0; i < regions.length; i++) {
        if (~regions[i].indexOf(departement)) {
            return regionsNames[i];
        }
    }
    return "undennnnnfined"; // If the 'for' loop doesn't return anything, it's false.
};
在代码中,我替换了
!=-1
~
一起使用,因为它使代码更加简洁。本质上,它将
-1
转换为
0
,即

如果您不熟悉,请务必查看更多信息


第一选项

尝试将您的
if
语句以
if/else if/else
格式链接在一起,如下所示:

function checkRegion(departement){
    var region = '';

    if(~alsace.indexOf(departement)) {
        region = "alsace";
    }
    else if(~aquitaine.indexOf(departement)) {
        region = "aquitaine";
    }
    else if(~auvergne.indexOf(departement)) {
        region = "auvergne";
    }
    else if(~basseNormandie.indexOf(departement)) {
        region = "basse-normandie";
    }
    else if(~iledefrance.indexOf(departement)) {
        region = "ile-de-france";
    }
    else{
        region = 'undennnnnfined';
    }
    return region;
};

第二选项

创建两个阵列:

  • 一个应该包含您的区域数组(
    阿尔萨斯
    阿基坦
    等)&
  • 另一个字符串包含数组的名称作为字符串,以便您可以根据计算为true的数组返回相应的字符串
代码:

function checkRegion(departement) {
    var
       regions = [alsace, aquitaine, auvergne, basseNormandie, iledefrance],
       regionsNames = ["alsace", "aquitaine", "auvergne", "basseNormandie", "iledefrance"];

    for (var i = 0; i < regions.length; i++) {
        if (~regions[i].indexOf(departement)) {
            return regionsNames[i];
        }
    }
    return "undennnnnfined"; // If the 'for' loop doesn't return anything, it's false.
};

那你有什么问题?你的功能正常吗?什么是阿尔萨斯
阿基坦
奥弗涅
。我的函数不工作,它总是返回“Unfinnned”。。。(alsace、aquitaine等…是字符串数组)函数应该搜索字符串“department”是否在其中一个数组(alsace、aquitaine、auvergne等)中。当我们有一个匹配项时,它应该在变量“region”中添加特定的单词,并返回它。您的问题完全不清楚。你在哪里定义阿尔萨斯、阿奎因、奥弗涅、巴斯诺曼迪、伊莱德朗斯?它们必须是数组,但如果您希望我们提供帮助,我们将需要它们的代码。提供的代码不提供任何研究。把你的变量值也放在这里。