recurse on object keys
by Gerald Gillespie
JavaScript
const recursiveSearch = (obj, searchKey, results = [], keys=[]) => {
const r = results;
const k = keys;
Object.keys(obj).forEach(key => {
const value = obj[key];
if(searchKey.test(key) && typeof value !== 'object'){
r.push(value);
k.push(key)
}else if(typeof value === 'object'){
k.push(key)
recursiveSearch(value, searchKey, r,k);
}else{
k.push(key)
}
});
return [r,k]
};
const obj = {
"messageHeader": {
"organizationName": "string",
"sequenceNumber": 0,
"userId": "string",
"sourceApplication": "string",
"orgAlias": "string"
},
"payload": {
"createAccession": {
"accessionContactInfo": [
{
"contactDate": "string",
"contactInfo": "string",
"followUpComplete": true,
"followUpDate": "string",
"followUpUserId": "string",
"printOnStatement": true,
"printableNotes": "string",
"userId": "string",
"voided": true
}
],
"accessionId": "string",
"accessionLevelDiagnosisCodes": [
{
"clientContact": "string",
"clientContactDate": "string",
"comment": "string",
"deleted": true,
"diagnosisCode": "string",
"diagnosisCodeOrder": 0,
"documentId": "string",
"narrativeDiag": "string",
"userId": "string",
"voidType": "string"
}
],
"additionalReportCopy": [
{
"address": {
"addressLine1": "string",
"addressLine2": "string",
"city": "string",
"countryCode": "string",
"region": "string",
"state": "string",
"zip": "string"
},
"clientId": "string",
"contactMethodType": "string",
"email": "string",
"fax": "string",
"name": "string",
"phone": "string"
...