数组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”中添加特定的单词,并返回它。您的问题完全不清楚。你在哪里定义阿尔萨斯、阿奎因、奥弗涅、巴斯诺曼迪、伊莱德朗斯?它们必须是数组,但如果您希望我们提供帮助,我们将需要它们的代码。提供的代码不提供任何研究。把你的变量值也放在这里。