Last active
October 10, 2018 16:00
-
-
Save basekays/b30e483cb8306f15f131fa3971f14de3 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const rawAddress = '1234 Main boulevard Ste 65-b San Francisco CA 94105'; | |
function addressParser(address) { | |
const splitAddress = address.split(" "); | |
const result = { | |
'Address Line 1': '', | |
'Address Line 2': '', | |
'City': '', | |
'State': '', | |
'Zip Code': '', | |
}; | |
const streetSuffixIndex = [ | |
'street', 'st', 'str', 'st.', | |
'road', 'rd', 'rd.', | |
'way', | |
'avenue', 'ave', 'ave.', | |
'boulevard', 'blvd', 'blvd.', | |
'lane', 'ln', 'ln.', | |
'drive', 'dr', 'dr.', | |
'terrace', 'ter', 'ter.', | |
'place', 'pl', 'pl.', | |
'court', 'ct', 'ct.', | |
]; | |
const secondaryDesignatorIndex = [ | |
'apt', 'apartment', 'suite', 'ste', | |
]; | |
// address line 1 and address line 2 | |
for (let i = 0; i < splitAddress.length; i++) { | |
const lowerCaseIndex = splitAddress[i].toLowerCase(); | |
if (streetSuffixIndex.includes(lowerCaseIndex)) { | |
const primaryNumber = splitAddress[i - 2]; | |
const streetName = splitAddress[i - 1]; | |
const streetSuffix = splitAddress[i]; | |
const addressLine1 = primaryNumber.concat(' ', streetName).concat(' ', streetSuffix); | |
result['Address Line 1'] = addressLine1; | |
} | |
if (secondaryDesignatorIndex.includes(lowerCaseIndex)) { | |
const secondaryDesignator = splitAddress[i]; | |
const secondaryNumber = splitAddress[i + 1]; | |
const addressLine2 = secondaryDesignator.concat(' ', secondaryNumber); | |
result['Address Line 2'] = addressLine2; | |
} | |
} | |
// city | |
splitAddress.splice(0, 5); | |
let city; | |
if (splitAddress.length > 3) { | |
city = splitAddress[0].concat(' ', splitAddress[1]); | |
} else { | |
city = splitAddress[0]; | |
} | |
// state and zipcode | |
const state = splitAddress[splitAddress.length - 2]; | |
const zipCode = splitAddress[splitAddress.length - 1]; | |
result['City'] = city; | |
result['State'] = state; | |
result['Zip Code'] = zipCode; | |
return result; | |
} | |
console.log(addressParser(rawAddress)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment