//Get array of values in a object by key //same key can be nested in an object or object with array of objects //@object Object : Source Object //@originalKey String : Key to be searched const deepSearchByKey = (object, originalKey, matches = []) => { if(object != null) { if(Array.isArray(object)) { for(let arrayItem of object) { deepSearchByKey(arrayItem, originalKey, matches); } } else if(typeof object == 'object') { for(let key of Object.keys(object)) { if(key == originalKey) { matches.push(object[key]); } else { deepSearchByKey(object[key], originalKey, matches); } } } } return matches; } //Example const myObject = { "users" :[ { "name" : "John" "address" : { "city" : "New York" } }, { "name" : "Robert" "address" : { "city" : "Chicago" } } ] } const data = deepSearchByKey ( myObject , 'city' ); console.log ( data ) //will print //[ "New York" , "Chicago"]