2017-04-06 4 views
0

が含まれている場合、私は私の配列regionsは、ユーザーが提出した文字列の一部が含まれているかどうかを確認しようとしています確認してください。本質的に、このjqueryスクリプトは、ユーザが住所に含まれる都市がregions配列の都市の1つであるかどうかをチェックする必要があります。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();
を使用して文字列内にある場合は、ちょうど見つける必要があります