us-state-converter
Version:
A package that converts U.S. state abbreviations to full names and back
515 lines (507 loc) • 9.35 kB
JavaScript
const list = [
{
name: 'Alabama',
usps: 'AL',
demonym: 'Alabamian',
iso: 'US-AL',
altAbbr: ['Ala'],
uscg: 'AL',
},
{
name: 'Alaska',
usps: 'AK',
demonym: 'Alaskan',
iso: 'US-AK',
altAbbr: ['Alas'],
uscg: 'AK',
},
{
name: 'Arizona',
usps: 'AZ',
demonym: 'Arizonan',
iso: 'US-AZ',
altAbbr: ['Ariz'],
uscg: 'AZ',
},
{
name: 'Arkansas',
usps: 'AR',
demonym: 'Arkansan',
iso: 'US-AR',
altAbbr: ['Ark'],
uscg: 'AR',
},
{
name: 'California',
usps: 'CA',
demonym: 'Californian',
iso: 'US-CA',
altAbbr: ['Cal', 'Calif'],
uscg: 'CF',
},
{
name: 'Colorado',
usps: 'CO',
demonym: 'Coloradan',
iso: 'US-CO',
altAbbr: ['Colo', 'Col'],
uscg: 'CL',
},
{
name: 'Connecticut',
usps: 'CT',
demonym: 'Connecticuter',
iso: 'US-CT',
altAbbr: ['Conn'],
uscg: 'CT',
},
{
name: 'Delaware',
usps: 'DE',
demonym: 'Delawarean',
iso: 'US-DE',
altAbbr: ['Del'],
uscg: 'DL',
},
{
name: 'District of Columbia',
usps: 'DC',
demonym: 'Washingtonian',
iso: 'US-DC',
altAbbr: ['Wash DC'],
uscg: 'DC',
},
{
name: 'Florida',
usps: 'FL',
demonym: 'Floridian',
iso: 'US-FL',
altAbbr: ['Fla', 'Flor'],
uscg: 'FL',
},
{
name: 'Georgia',
usps: 'GA',
demonym: 'Georgian',
iso: 'US-GA',
altAbbr: ['Geo'],
uscg: 'GA',
},
{
name: 'Hawaii',
usps: 'HI',
demonym: 'Hawaii resident',
iso: 'US-HI',
altAbbr: ['Geo'],
uscg: 'HA',
},
{
name: 'Idaho',
usps: 'ID',
demonym: 'Idahoan',
iso: 'US-ID',
altAbbr: ['Ida'],
uscg: 'ID',
},
{
name: 'Illinois',
usps: 'IL',
demonym: 'Illinoisan',
iso: 'US-IL',
altAbbr: ['Ill', 'Ills', "Ill's"],
uscg: 'IL',
},
{
name: 'Indiana',
usps: 'IN',
demonym: 'Hoosier',
iso: 'US-IN',
altAbbr: ['Ind'],
uscg: 'IN',
},
{
name: 'Iowa',
usps: 'IA',
demonym: 'Iowan',
iso: 'US-IA',
altAbbr: ['Ioa'],
uscg: 'IA',
},
{
name: 'Kansas',
usps: 'KS',
demonym: 'Kansan',
iso: 'US-KS',
altAbbr: ['Kans', 'Kan'],
uscg: 'KA',
},
{
name: 'Kentucky',
usps: 'KY',
demonym: 'Kentuckian',
iso: 'US-KY',
altAbbr: ['Ken', 'Kent'],
uscg: 'KY',
},
{
name: 'Louisiana',
usps: 'LA',
demonym: 'Louisianian',
iso: 'US-LA',
altAbbr: [],
uscg: 'LA',
},
{
name: 'Maine',
usps: 'ME',
demonym: 'Mainer',
iso: 'US-ME',
altAbbr: [],
uscg: 'ME',
},
{
name: 'Maryland',
usps: 'MD',
demonym: 'Marylander',
iso: 'US-MD',
altAbbr: [],
uscg: 'MD',
},
{
name: 'Massachusetts',
usps: 'MA',
demonym: 'Massachusettsan',
iso: 'US-MA',
altAbbr: ['Mass'],
uscg: 'MS',
},
{
name: 'Michigan',
usps: 'MI',
demonym: 'Michiganian',
iso: 'US-MI',
altAbbr: ['Mich'],
uscg: 'MC',
},
{
name: 'Minnesota',
usps: 'MN',
demonym: 'Minnesotan',
iso: 'US-MN',
altAbbr: ['Minn'],
uscg: 'MN',
},
{
name: 'Mississippi',
usps: 'MS',
demonym: 'Mississippian',
iso: 'US-MS',
altAbbr: ['Miss'],
uscg: 'MI',
},
{
name: 'Missouri',
usps: 'MO',
demonym: 'Missourian',
iso: 'US-MO',
altAbbr: [],
uscg: 'MO',
},
{
name: 'Montana',
usps: 'MT',
demonym: 'Montanan',
iso: 'US-MT',
altAbbr: ['Mont'],
uscg: 'MT',
},
{
name: 'Nebraska',
usps: 'NE',
demonym: 'Nebraskan',
iso: 'US-NE',
altAbbr: ['Nebr', 'Neb'],
uscg: 'NB',
},
{
name: 'Nevada',
usps: 'NV',
demonym: 'Nevadan',
iso: 'US-NV',
altAbbr: ['Nev'],
uscg: 'NV',
},
{
name: 'New Hampshire',
usps: 'NH',
demonym: 'New Hampshirite',
iso: 'US-NH',
altAbbr: [],
uscg: 'NH',
},
{
name: 'New Jersey',
usps: 'NJ',
demonym: 'New Jerseyan',
iso: 'US-NJ',
altAbbr: ['N Jersey'],
uscg: 'NJ',
},
{
name: 'New Mexico',
usps: 'NM',
demonym: 'New Mexican',
iso: 'US-NM',
altAbbr: ['N Mex', 'New M'],
uscg: 'NM',
},
{
name: 'New York',
usps: 'NY',
demonym: 'New Yorker',
iso: 'US-NY',
altAbbr: ['N York'],
uscg: 'NY',
},
{
name: 'North Carolina',
usps: 'NC',
demonym: 'North Carolinian',
iso: 'US-NC',
altAbbr: ['N Car'],
uscg: 'NC',
},
{
name: 'North Dakota',
usps: 'ND',
demonym: 'North Dakotan',
iso: 'US-ND',
altAbbr: ['N Dak', 'NoDak'],
uscg: 'ND',
},
{
name: 'Ohio',
usps: 'OH',
demonym: 'Ohioan',
iso: 'US-OH',
altAbbr: ['O'],
uscg: 'OH',
},
{
name: 'Oklahoma',
usps: 'OK',
demonym: 'Oklahoman',
iso: 'US-OK',
altAbbr: ['Okla'],
uscg: 'OK',
},
{
name: 'Oregon',
usps: 'OR',
demonym: 'Oregonian',
iso: 'US-OR',
altAbbr: ['Ore'],
uscg: 'OR',
},
{
name: 'Pennsylvania',
usps: 'PA',
demonym: 'Pennsylvanian',
iso: 'US-PA',
altAbbr: ['Penn', 'Penna'],
uscg: 'PA',
},
{
name: 'Rhode Island',
usps: 'RI',
demonym: 'Rhode Islander',
iso: 'US-RI',
altAbbr: ['RI & PP', 'R Isl'],
uscg: 'RI',
},
{
name: 'South Carolina',
usps: 'SC',
demonym: 'South Carolinian',
iso: 'US-SC',
altAbbr: ['S Car'],
uscg: 'SC',
},
{
name: 'South Dakota',
usps: 'SD',
demonym: 'South Dakotan',
iso: 'US-SD',
altAbbr: ['S Dak', 'SoDak'],
uscg: 'SD',
},
{
name: 'Tennessee',
usps: 'TN',
demonym: 'Tennessean',
iso: 'US-TN',
altAbbr: ['Tenn'],
uscg: 'TN',
},
{
name: 'Texas',
usps: 'TX',
demonym: 'Texan',
iso: 'US-TX',
altAbbr: ['Tex'],
uscg: 'TX',
},
{
name: 'Utah',
usps: 'UT',
demonym: 'Utahn',
iso: 'US-UT',
altAbbr: [],
uscg: 'UT',
},
{
name: 'Vermont',
usps: 'VT',
demonym: 'Vermonter',
iso: 'US-VT',
altAbbr: [],
uscg: 'VT',
},
{
name: 'Virginia',
usps: 'VA',
demonym: 'Virginian',
iso: 'US-VA',
altAbbr: ['Virg'],
uscg: 'VA',
},
{
name: 'Washington',
usps: 'WA',
demonym: 'Washingtonian',
iso: 'US-WA',
altAbbr: ['Wash', 'Wn'],
uscg: 'WN',
},
{
name: 'West Virginia',
usps: 'WV',
demonym: 'West Virginian',
iso: 'US-WV',
altAbbr: ['W Va', 'W Virg'],
uscg: 'WV',
},
{
name: 'Wisconsin',
usps: 'WI',
demonym: 'Wisconsinite',
iso: 'US-WI',
altAbbr: ['Wis', 'Wisc'],
uscg: 'WS',
},
{
name: 'Wyoming',
usps: 'WY',
demonym: 'Wyomingite',
iso: 'US-WY',
altAbbr: ['Wyo'],
uscg: 'WY',
},
{
name: 'American Samoa',
usps: 'AS',
demonym: 'American Samoan',
iso: 'US-AS',
altAbbr: [],
uscg: 'AS',
},
{
name: 'Guam',
usps: 'GU',
demonym: 'Guamanian',
iso: 'US-GU',
altAbbr: [],
uscg: 'GU',
},
{
name: 'Northern Mariana Islands',
usps: 'MP',
demonym: 'Mariana Islander',
iso: 'US-MP',
altAbbr: ['CNMI'],
uscg: 'CM',
},
{
name: 'Puerto Rico',
usps: 'PR',
demonym: 'Puerto Rican',
iso: 'US-PR',
altAbbr: [],
uscg: 'PR',
},
{
name: 'US Virgin Islands',
usps: 'VI',
demonym: 'Virgin Islander',
iso: 'US-VI',
altAbbr: ['USVI'],
uscg: 'VI',
},
{
name: 'US Minor Outlying Islands',
usps: 'UM',
demonym: '',
iso: 'US-UM',
altAbbr: [],
uscg: 'UM',
},
]
module.exports = (() => {
const main = state => {
if (!state) return list
state = state.split('.').join('')
const found = list.find(
item =>
item.name.toUpperCase() === state.toUpperCase() ||
item.usps.toUpperCase() === state.toUpperCase() ||
item.altAbbr.find(st => st.toUpperCase() === state.toUpperCase()),
)
if (found) return found
return 'No state found!'
}
main.abbr = state => {
if (!state) return 'Please pass a full state name as your argument'
const found = list.find(
item => item.name.toUpperCase() === state.toUpperCase(),
)
if (found) return found.usps
return 'No abbreviation found with that state name'
}
main.fullName = abbr => {
if (!abbr) return 'Please pass an abbreviation as your argument'
const found = list.find(
item =>
item.usps.toUpperCase() === abbr.toUpperCase() ||
item.altAbbr.find(st => st.toUpperCase() === abbr.toUpperCase()),
)
if (found) return found.name
return 'No state found with that abbreviation'
}
main.only50 = () => {
const notStates = ['DC', 'AS', 'GU', 'MP', 'PR', 'VI', 'UM']
return list.filter(item => !notStates.includes(item.usps))
}
main.demonym = state => {
if (!state)
return 'Please pass a state name or abbreviation as your argument'
const found = list.find(
item =>
item.name.toUpperCase() === state.toUpperCase() ||
item.usps.toUpperCase() === state.toUpperCase() ||
item.altAbbr.find(st => st.toUpperCase() === state.toUpperCase()),
)
if (found) return found.demonym
return 'No demonym found for that state'
}
return main
})()