2017-03-05 1 views
0

J'essaie d'obtenir l'abréviation d'état à partir d'une adresse IP du client.Comment trouver l'abréviation d'état dans le tableau à partir de la valeur obtenue

Je l'ai utilisé l'API de IPInfo.org pour retourner l'état à partir d'une adresse IP et qui a bien fonctionné comme ceci:

$.get("https://ipinfo.io", function (response) { 
$state = response.region; 
}, "jsonp"); 

J'ai vu beaucoup le nom de l'état des listes d'abréviation comme celui-ci en ligne (https://gist.github.com/mshafrir/2646763):

{ 
'Alabama': 'AL', 
'Alaska': 'AK', 
'American Samoa': 'AS', 
'Arizona': 'AZ', 
'Arkansas': 'AR', 
'California': 'CA', 
'Colorado': 'CO', 
'Connecticut': 'CT', 
'Delaware': 'DE', 
'District Of Columbia': 'DC', 
'Federated States Of Micronesia': 'FM', 
'Florida': 'FL', 
'Georgia': 'GA', 
'Guam': 'GU', 
'Hawaii': 'HI', 
'Idaho': 'ID', 
'Illinois': 'IL', 
'Indiana': 'IN', 
'Iowa': 'IA', 
'Kansas': 'KS', 
'Kentucky': 'KY', 
'Louisiana': 'LA', 
'Maine': 'ME', 
'Marshall Islands': 'MH', 
'Maryland': 'MD', 
'Massachusetts': 'MA', 
'Michigan': 'MI', 
'Minnesota': 'MN', 
'Mississippi': 'MS', 
'Missouri': 'MO', 
'Montana': 'MT', 
'Nebraska': 'NE', 
'Nevada': 'NV', 
'New Hampshire': 'NH', 
'New Jersey': 'NJ', 
'New Mexico': 'NM', 
'New York': 'NY', 
'North Carolina': 'NC', 
'North Dakota': 'ND', 
'Northern Mariana Islands': 'MP', 
'Ohio': 'OH', 
'Oklahoma': 'OK', 
'Oregon': 'OR', 
'Palau': 'PW', 
'Pennsylvania': 'PA', 
'Puerto Rico': 'PR', 
'Rhode Island': 'RI', 
'South Carolina': 'SC', 
'South Dakota': 'SD', 
'Tennessee': 'TN', 
'Texas': 'TX', 
'Utah': 'UT', 
'Vermont': 'VT', 
'Virgin Islands': 'VI', 
'Virginia': 'VA', 
'Washington': 'WA', 
'West Virginia': 'WV', 
'Wisconsin': 'WI', 
'Wyoming': 'WY' 
} 

mais je ne suis pas sûr de savoir comment prendre effectivement la sortie de la seule fonction et l'utiliser dans ce tableau à la sortie de l'abréviation correcte.

Comment cela est-il fait? Merci d'avance!

+0

Votre entrée sera le nom de l'état et la sortie sera le Abr.? –

Répondre

1

Ceci est assez simple. Vous pouvez accéder aux propriétés de l'objet JSON de deux manières.

  1. Accès en utilisant la notation support
  2. Access notation à l'aide de points ('') (recommandé)

J'ai créé une fonction appelée getStateAbbr qui prennent le nom de l'état de ipinfo.io et en utilisant la notation de support, vous obtenez la valeur correspondante. Pourquoi ai-je utilisé la notation de parenthèse, car elle peut avoir des valeurs dynamiques.

Si vous essayez . nation, vous obtiendrez undefined.

$.get("https://ipinfo.io", function(response) { 
 
    var state = response.region; 
 
    getStateAbbr(state); 
 
}, "jsonp"); 
 

 
var states = { 
 
    'Alabama': 'AL', 
 
    'Alaska': 'AK', 
 
    'American Samoa': 'AS', 
 
    'Arizona': 'AZ', 
 
    'Arkansas': 'AR', 
 
    'California': 'CA', 
 
    'Colorado': 'CO', 
 
    'Connecticut': 'CT', 
 
    'Delaware': 'DE', 
 
    'District Of Columbia': 'DC', 
 
    'Federated States Of Micronesia': 'FM', 
 
    'Florida': 'FL', 
 
    'Georgia': 'GA', 
 
    'Guam': 'GU', 
 
    'Hawaii': 'HI', 
 
    'Idaho': 'ID', 
 
    'Illinois': 'IL', 
 
    'Indiana': 'IN', 
 
    'Iowa': 'IA', 
 
    'Kansas': 'KS', 
 
    'Kentucky': 'KY', 
 
    'Louisiana': 'LA', 
 
    'Maine': 'ME', 
 
    'Marshall Islands': 'MH', 
 
    'Maryland': 'MD', 
 
    'Massachusetts': 'MA', 
 
    'Michigan': 'MI', 
 
    'Minnesota': 'MN', 
 
    'Mississippi': 'MS', 
 
    'Missouri': 'MO', 
 
    'Montana': 'MT', 
 
    'Nebraska': 'NE', 
 
    'Nevada': 'NV', 
 
    'New Hampshire': 'NH', 
 
    'New Jersey': 'NJ', 
 
    'New Mexico': 'NM', 
 
    'New York': 'NY', 
 
    'North Carolina': 'NC', 
 
    'North Dakota': 'ND', 
 
    'Northern Mariana Islands': 'MP', 
 
    'Ohio': 'OH', 
 
    'Oklahoma': 'OK', 
 
    'Oregon': 'OR', 
 
    'Palau': 'PW', 
 
    'Pennsylvania': 'PA', 
 
    'Puerto Rico': 'PR', 
 
    'Rhode Island': 'RI', 
 
    'South Carolina': 'SC', 
 
    'South Dakota': 'SD', 
 
    'Tennessee': 'TN', 
 
    'Texas': 'TX', 
 
    'Utah': 'UT', 
 
    'Vermont': 'VT', 
 
    'Virgin Islands': 'VI', 
 
    'Virginia': 'VA', 
 
    'Washington': 'WA', 
 
    'West Virginia': 'WV', 
 
    'Wisconsin': 'WI', 
 
    'Wyoming': 'WY' 
 
} 
 

 
function getStateAbbr(name) { 
 
    alert(states[name]); 
 
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>

0

accéder à la propriété via support de notation/indice:

var stateName = response.region; 
var stateAbbreviation = abbreviations[stateName];