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

685
Vistas
JavaScript: How to get parent object key by child object value?

can you help me to make a function that will be able to find parent object key by child object value?

This is object structure:

const mainObject = {
  FIRST: {
    key1: 'value1',
    key2: 'value2',
  },
  SECOND: {
    key3: 'value3',
    key4: 'value4',
  },
};

I tried to use this function:

function getKeyByValue(object, value) {
  return Object.keys(object).find((key) => object[key] === value);
}

but if I run getKeyByValue(mainObject, 'value4') it returns undefined.

Can someone help how I can improve getKeyByValue function to get the parent key (I need to get 'SECOND' name)?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Doing it recursively is an option

let path = [];

let parent = '';

function getParent(path, json, value) {
    for (var key in json) {
        if (typeof json[key] === 'object') {
            path.push(key.toString());
            getParent(path, json[key], value);
            path.pop();
        } else {
            if (json[key] == value) {
               parent = path[0];
            }
        }
    }
}

const mainObject = {
  FIRST: {
    key1: 'value1',
    key2: 'value2',
  },
  SECOND: {
    key3: 'value3',
    key4: 'value4',
  },
};

getParent(path, mainObject, 'value4');

console.log(parent);

about 4 years ago · Juan Pablo Isaza Denunciar

0

your problem is that you check the wrong keys (objects)

const mainObject = {
  FIRST: {
    key1: 'value1',
    key2: 'value2',
  },
  SECOND: {
    key3: 'value3',
    key4: 'value4',
  },
};

function getKeyByValue(object, value) {
  //you can see that the first keys are for the first objects (first and second) this method doesnt give nested keys.
  console.log(Object.keys(object));
  return Object.keys(object).find((key) => Object.keys(object[key]).some((key2) => object[key][key2] === value));
}

//you can also do this and check directly the values
function getKeyByValue2(object, value) {
  //you can see that the first keys are for the first objects (first and second) this method doesnt give nested keys.
  console.log(Object.keys(object));
  return Object.keys(object).find((key) => Object.values(object[key]).indexOf(value) > -1);
}

console.log(getKeyByValue(mainObject, 'value4'));
console.log(getKeyByValue2(mainObject, 'value4'));

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