Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

197
Vistas
javascript - validate nested key inside an object

I have the following JavaScript object.

let obj = {
  "type": "user",
  "personalDetails": {
    "firstName": "Steven",
    "address": {
      "streetName": "abcd",
      "zipCode": "012345"
    }
  },
  "employeeDetails": {
    "designation": {
      "id": "1234",
      "manage": "Mark",
    }
  }
}

How can I create a dynamic function which will take this JS object obj as a first argument, one parent node as the second argument and a child node as the third argument.

if the third argument is present as a child node inside the second argument, the function should return true. For example.

const childNodeExist = (obj, personalDetails, firstName) => {
    //.. since firstName exists in personalDetails should return true
}

const childNodeExist = (obj, employeeDetails, designation) => {
    //.. since designation exists in employeeDetails should return true
}
const childNodeExist = (obj, employeeDetails, salary) => {
    //.. since salary exists in employeeDetails should return false
}
about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

You can try using Object.prototype.hasOwnProperty():

The hasOwnProperty() method returns a boolean indicating whether the object has the specified property as its own property (as opposed to inheriting it).

let obj = {
  "type": "user",
  "personalDetails": {
    "firstName": "Steven",
    "address": {
      "streetName": "abcd",
      "zipCode": "012345"
    }
  },
  "employeeDetails": {
    "designation": {
      "id": "1234",
      "manage": "Mark",
    }
  }
}

const childNodeExist = (obj, prop, childProp) => {
    return obj[prop]?.hasOwnProperty(childProp) ?? false; 
}
console.log(childNodeExist(obj, 'personalDetails', 'firstName'));

console.log(childNodeExist(obj, 'employeeDetails', 'designation'));

console.log(childNodeExist(obj, 'employeeDetails', 'salary'));

Update: Alternative way to support in all the browsers:

let obj = {
  "type": "user",
  "personalDetails": {
    "firstName": "Steven",
    "address": {
      "streetName": "abcd",
      "zipCode": "012345"
    }
  },
  "employeeDetails": {
    "designation": {
      "id": "1234",
      "manage": "Mark",
    }
  }
}

const childNodeExist = (obj, prop, childProp) => {
    return obj.hasOwnProperty(prop)? obj[prop].hasOwnProperty(childProp) : false; 
}
console.log(childNodeExist(obj, 'personalDetails', 'firstName'));

console.log(childNodeExist(obj, 'employeeDetails', 'designation'));

console.log(childNodeExist(obj, 'employeeDetails', 'salary'));

about 4 years ago · Juan Pablo Isaza Denunciar

0

Is this what you require?

const childNodeExist = (obj, parentNode, childNode) => {
    return (obj[parentNode][childNode] ? true : false);
}

let obj = {
  "type": "user",
  "personalDetails": {
    "firstName": "Steven",
    "address": {
      "streetName": "abcd",
      "zipCode": "012345"
    }
  },
  "employeeDetails": {
    "designation": {
      "id": "1234",
      "manage": "Mark",
    }
  }
}

console.log(childNodeExist(obj, "personalDetails", "firstName"));
console.log(childNodeExist(obj, "employeeDetails", "designation"));
console.log(childNodeExist(obj, "employeeDetails", "salary"));

about 4 years ago · Juan Pablo Isaza Denunciar

0

This would do the trick:

  const childNodeExist = (obj, parentNode, childNode) => Boolean(obj[parentNode][childNode])
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda