2017-04-06 125 views
0

我試圖檢查我的數組regions是否包含用戶提交的字符串的一部分。實質上,這個jQuery腳本應該檢查用戶包含在他們地址中的城市是否爲regions陣列中的某個城市。jquery檢查數組是否包含子字符串

例如,當用戶進入Examplestreet 24 City1City1regions陣列中,它應該顯示的€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"); 
     } 
    } 
} 

此代碼工作正常時,字符串就是這個城市沒有街道或其他字符,但如果有人進入他們的詳細地址,也應該工作。所以我需要更改我的代碼,以便在字符串address的任何部分搜索數組regions

回答

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

+0

這是完美的,解決了我的問題!非常感謝! –

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

相關問題