Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

146
Visualizações
¿Cómo puedo obtener el objeto con el valor más alto?

Tengo estos objetos anidados

 var obj = { first:{ num:10 }, second: { num:5 }, third: { num: 15 } } console.log(obj);

entonces podría haber muchos objetos anidados dentro y necesito obtener el objeto con el valor num más alto dentro del cual en este caso es el third objeto.

Entonces debería obtener como salida

 third: { num: 15 }

Me quedé atascado en la iteración.

 var arr = Object.keys( obj ).map(function ( key, index ) { console.log(obj[key]); }); console.log(arr);
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

como mencioné en mi comentario anterior, lo que mencionó como resultado esperado no es realmente un objeto. sin embargo, puede usar el siguiente fragmento para encontrar la clave dentro de su objeto principal que contiene el número más alto:

 var running = Number.MIN_VALUE; var ans = ""; Object.keys(object).forEach(key => { if(object[key]["num"] > running) { ans = key; } }) console.log(JSON.stringify(object[ans])); //outputs { num: 15 }
about 4 years ago · Juan Pablo Isaza Relatório

0

Si desea recuperar todo el objeto con el valor alto, usaría reduce

 var obj = { first:{ num:10 }, second: { num:5 }, third: { num: 15 } } const result = Object.entries(obj) .reduce( (acc,[k,i]) => Object.values(acc)[0].num<i.num ? {[k]:i} : acc , {zero:{num:0}}) console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

No hay necesidad de Object.keys (aunque eso estaría bien para obtener una matriz de claves de objetos para verificar) o map , solo un ciclo simple donde recuerda el objeto con el número más alto que ha visto hasta ahora:

 let found = null; // Loop through the keys of the object for (const key in obj) { // Get the value for this key const entry = obj[key]; // If this is an own property of the object and either A) We // don't have any "found" object yet or the one we do have has // a lower `num` than this one, remember this one if (Object.hasOwn(obj, key) && (!found || found.num < entry.num)) { found = entry; } }

Ejemplo en vivo:

 const obj = { first:{ num:10 }, second: { num:5 }, third: { num: 15 } }; let found = null; for (const key in obj) { const entry = obj[key]; if (Object.hasOwn(obj, key) && (!found || found.num < entry.num)) { found = entry; } } console.log(found);

Si también necesita recordar el nombre de la propiedad, simplemente hágalo al mismo tiempo que asigna a found .


Eso usa la nueva función Object.hasOwn . Si necesita admitir implementaciones que no lo tienen, use un polyfill seleccionado o simplemente:

 if (!Object.hasOwn) { Object.defineProperty(Object, "hasOwn", { value: Function.prototype.call.bind(Object.prototype.hasOwnProperty), writable: true, configurable: true, }); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda