我有一个邮政编码变量,想要在更改/输入邮政编码时使用JS将位置添加到另一个变量中。因此,例如,如果输入ST6,我希望输入Stoke North。
我不知何故需要做一个if语句来运行例如。
if(code contains ST1)
{
location = stoke central;
}
else if(code contains ST2)
{
location = stoke north;
}
等...
我该怎么做?它不会检查'code'是否等于某个值,但如果它包含一个值,我认为这是我的问题。
答案 0 :(得分:39)
您可能需要indexOf
if (code.indexOf("ST1") >= 0) { ... }
else if (code.indexOf("ST2") >= 0) { ... }
它会检查contains
变量string
中的code
是否在任何位置。这需要code
为字符串。如果您希望此解决方案不区分大小写,则必须使用String.toLowerCase()
或String.toUpperCase()
将大小写更改为完全相同。
您还可以使用{/ 1}}语句,例如
switch
答案 1 :(得分:11)
您可以使用正则表达式:
if (/ST1/i.test(code))
答案 2 :(得分:2)
检查字符串是否包含其他字符串的最快方法是使用indexOf
:
if (code.indexOf('ST1') !== -1) {
// string code has "ST1" in it
} else {
// string code does not have "ST1" in it
}
答案 3 :(得分:2)
if (code.indexOf("ST1")>=0) { location = "stoke central"; }
答案 4 :(得分:0)
如果你有很多这些需要检查,你可能想要存储映射列表并只是循环它,而不是有一堆if / else语句。类似的东西:
var CODE_TO_LOCATION = {
'ST1': 'stoke central',
'ST2': 'stoke north',
// ...
};
function getLocation(text) {
for (var code in CODE_TO_LOCATION) {
if (text.indexOf(code) != -1) {
return CODE_TO_LOCATION[code];
}
}
return null;
}
通过这种方式,您可以轻松添加更多代码/位置映射。如果你想处理多个位置,你可以在函数中建立一个位置数组,而不是只返回你找到的第一个位置。