Find First Property - recursive
by jacobwsmith
JavaScript
console.clear();
// Returns the first found value of a property within an object
// Otherwise returns 'property was not found'
function findFirstProperty(name, obj) {
for (const [key, value] of Object.entries(obj)) {
if (key === name) {
return value;
}
if (value && typeof value === 'object' && value.constructor === Object) {
return findFirstProperty(name, value);
}
}
return 'property was not found';
}
// Test
{
const obj = {
name: 'Susan Sontag',
bibliography: {
prizes: 'National Book Award',
essays: {
collections: {
criticism: [{
name: 'On Photography',
subject: 'photography'
}, {
name: 'Against Interpretation',
subject: 'misc.'
}]
}
}
}
};
console.log(findFirstProperty('foo', obj)); // property was not found
console.log(findFirstProperty('name', obj)); // Susan Sontag
console.log(findFirstProperty('prizes', obj)); // National Book Award
console.log(findFirstProperty('criticism', obj)); // Array of criticism :)
}