Skip to content

Instantly share code, notes, and snippets.

@basekays
Last active October 10, 2018 16:00
Show Gist options
  • Save basekays/b30e483cb8306f15f131fa3971f14de3 to your computer and use it in GitHub Desktop.
Save basekays/b30e483cb8306f15f131fa3971f14de3 to your computer and use it in GitHub Desktop.
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