2017-04-06 1 views
0

Ich versuche zu überprüfen, ob mein Array regions Teil einer Zeichenfolge enthält, die Benutzer senden. Im Wesentlichen sollte dieses jquery-Skript prüfen, ob die Stadt, die ein Benutzer in ihre Adresse aufgenommen hat, eine der Städte im regions-Array ist.Jquery prüfen, ob Array Teilstring enthält

Zum Beispiel, wenn ein Benutzer betritt Examplestreet 24 City1 und City1 im regions Array ist, sollte es einen Preis von €40 angezeigt werden, sonst sollte es €2/km zeigen.

Ich habe den folgenden Code:

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

Dieser Code funktioniert prima, wenn die Zeichenfolge nur die Stadt, ohne die Straße oder andere Zeichen, aber es sollte auch funktionieren, wenn jemand ihre vollständige Adresse eingibt. Also muss ich meinen Code ändern, so dass er das Array regions für irgendeinen Teil der Zeichenkette address durchsucht.

Antwort

2

Sie regexp verwenden können, den richtigen Preis zu finden:

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

Das ist perfekt und löste mein Problem! Danke vielmals! –

0

sollten Sie finden nur, wenn eine der Städte in der Zeichenfolge mit 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();

Verwandte Themen