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 :)
  
}