我正在尝试检查我的数组regions
是否包含用户提交的字符串的一部分。本质上,这个jquery脚本应该检查用户在其地址中包含的城市是否是regions
数组中的城市之一。
例如,当用户输入Examplestreet 24 City1
并且City1
位于regions
数组中时,它应显示€40
的价格,否则应显示{{1} }}。
我有以下代码:
€2/km
当字符串只是没有街道或其他字符的城市时,此代码工作正常,但如果有人输入其完整地址,它也应该有效。所以我需要更改我的代码,以便在数组var regions = ["city1", "city2", "city3"];
var str = $("#addressField").val();
var address = str.toLowerCase();
var key, value, result;
for (key in regions) {
if (regions.hasOwnProperty(key) && !isNaN(parseInt(key, 10))) {
value = regions[key];
if (value.substring() === address) {
$("#deliveryPrice").text("€40");
}
else {
$("#deliveryPrice").text("€2/km");
}
}
}
中搜索字符串regions
的任何部分。
答案 0 :(得分:2)
您可以使用正则表达式找到合适的价格:
var regions = ["city1", "city2", "city3"];
var address = "example address 42-200 City1 Poland";
var address2 = "city3";
var address3 = "city6";
function priceForAddress(address, regions) {
var city = regions.find(function (region) {
var reg = new RegExp(region, 'i');
return address.match(reg) !== null;
});
if (city) {
return '20$';
} else {
return '4$/km';
}
}
console.log(priceForAddress(address, regions));
console.log(priceForAddress(address2, regions));
console.log(priceForAddress(address3, regions));

答案 1 :(得分:0)
您应该使用indexOf
function test()
{
var regions = ["city1", "city2", "city3"];
var str = "Examplestreet 24 City1";
var address = str.toLowerCase();
var value, result;
for (value of regions) {
result = str.toLowerCase().indexOf(value);
console.log(result);
if (result !== -1)
{
console.log("$40");
return;
}
else
{
console.log("$2/km");
return;
}
}
}
test();