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

198
Visualizações
Mejor manera de acceder a los atributos anidados en JavaScript

Tengo esta función en la que quiero acceder a los atributos anidados de los argumentos pasados dentro de la función.

 var objectsArr = [ {nestedobj:{property:'1'}}, {nestedobj:{property:'3'}}, {nestedobj:{property:'2'}}, {nestedobj:{property:'4'}} ]; function sortObjectsArr(objectsArray) { if (arguments.length == 2) { objectsArray.sort((a,b) => a[arguments[1]] - b[arguments[1]]); } if (arguments.length == 3) { objectsArray.sort((a,b) => a[arguments[1]][arguments[2]] - b[arguments[1]][arguments[2]]); } if (arguments.length == 4) { objectsArray.sort((a,b) => a[arguments[1]][arguments[2]][arguments[3]] - b[arguments[1]][arguments[2]][arguments[3]]); } //and so on and so forth } sortObjectsArr(objectsArr, 'nestedobj', 'property'); console.log(objectsArr);

¿Hay una forma más agradable de acceder a los atributos del objeto? en lugar de [arguments[1]][arguments[2]][arguments[3]].... ?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Entonces, primero tomaría los otros argumentos como un parámetro de descanso en lugar de usar la matriz de argumentos. Entonces definiría una pequeña función auxiliar.

 function sortObjectsArr(objectsArray, ...path) { objectsArray.sort((a, b) => getFromPath(a, path) - getFromPath(b, path)) } function getFromPath(obj, path) { let r = obj; path.forEach(key => { r = r[key]}) return r } let objectsArr = [ {nestedobj:{property:'1'}}, {nestedobj:{property:'3'}}, {nestedobj:{property:'2'}}, {nestedobj:{property:'4'}} ]; sortObjectsArr(objectsArr, 'nestedobj', 'property'); console.log(objectsArr);

Finalmente: evite usar var , use let en su lugar, es antiguo y se comporta de manera extraña (de formas que no esperaría). Pero explicar eso está fuera de esta respuesta, puede buscarlo en Google.

EDITAR: si quieres ser realmente genial, puedes usar la función de reducción:

 function getFromPath(obj, path) { return path.reduce((o, key) => o[key], obj) }

Si esto es más legible, debe decidir por sí mismo.

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