Land Ländercode zuweisen in JavaScript?
Die untere if-Bedingung muss ich für 222 Länder schreiben, wie kann ich das einfacher machen? Oder das ich nicht so viel Code schreiben muss?
var country = $('#myInput').val();
if(country == "Germany"){country = "DE"}
6 Antworten
Du könntest die Länder / Codes einfach in ein Array packen und dann immer nur das jeweils andere abfragen, gibt solche Arrays sogar vorgefertigt: https://gist.github.com/maephisto/9228207
Du müsstest den in deinem Fall ggf umdrehen, also mit den Ländernamen als Keys und den Codes als Werten, mit dem oben verlinkten Array, nur umgekehrt, also z.B. so in der Art:
var country = isoCountries[$('#myInput').val()];
Du könntest dir die Daten von einer Seite wie https://www.iso.org/obp/ui/#search über Excel in eine CSV und von dort als json Datei konvertieren ( https://www.iso.org/obp/ui/#search ).
Dann greifst du einfach auf das Json-Objekt zu.
Ein Anfang könnte folgender sein:
json-Datei:
var Laendercodes = { "CODES": [ { "English_short_name": "Afghanistan", "French_short_name": "Afghanistan (l')", "Alpha2": "AF", "Alpha3": "AFG", "Numeric": 4 }, //... { "English_short_name": "Gabon", "French_short_name": "Gabon (le)", "Alpha2": "GA", "Alpha3": "GAB", "Numeric": 266 }, { "English_short_name": "Gambia (the)", "French_short_name": "Gambie (la)", "Alpha2": "GM", "Alpha3": "GMB", "Numeric": 270 }, { "English_short_name": "Georgia", "French_short_name": "Géorgie (la)", "Alpha2": "GE", "Alpha3": "GEO", "Numeric": 268 }, { "English_short_name": "Germany", "French_short_name": "Allemagne (l')", "Alpha2": "DE", "Alpha3": "DEU", "Numeric": 276 }, { "English_short_name": "Ghana", "French_short_name": "Ghana (le)", "Alpha2": "GH", "Alpha3": "GHA", "Numeric": 288 }, { "English_short_name": "Gibraltar", "French_short_name": "Gibraltar", "Alpha2": "GI", "Alpha3": "GIB", "Numeric": 292 } //... ] }
In der HTML-Datei suchst du dann in einer Schleife nach dem vollen Namen und gibst den Alpha-2-Code zurück.
Warum nicht gleich ein <select> mit den richtigen Werten?
<select name="laendercode">
<option value="DE">Germany</option>
<option value="FR">France</option>
..
</select>
Die Werte kannst du in PHP über eine Schleife erstellen, vorher alle in ein Array packen.
Wie wäre es mit switch (inkl. case und default) als funktion?
Verwende i18n. So reichen dir folgend diese drei Zeilen:
var countries = require("i18n-iso-countries");
var country = $('#myInput').val();
country = countries.getAlpha2Code(country, "en");
Und wie frage ich ab, welche Zeile vom Array mit var country übereinstimmt?