繁体   English   中英

jQuery检查数组是否包含子字符串

[英]Jquery check if array contains substring

我正在尝试检查我的数组regions包含用户提交的字符串的一部分。 本质上,此jquery脚本应检查用户包含在其地址中的城市是否是regions数组中的城市之一。

例如,当用户输入Examplestreet 24 City1并且City1regions数组中时,它应显示为€40 ,否则应显示€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搜索字符串address任何部分。

您可以使用regexp找到合适的价格:

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

您应该使用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(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM