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

时间:2017-04-06 10:33:12

标签: javascript php jquery arrays

我正在尝试检查我的数组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的任何部分。

2 个答案:

答案 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();