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

107
Visualizações
Comportamiento incierto de _.get
let a = { b : null } _.get(a, 'b',''); //return null

pero

 _.get (a, null, '') //return ''

¿Es nulo un valor falso para _.get()?

 let a = { b : {c:{ } } //basically a nested object

Estoy tratando de hacer _.get(a, 'b.c','').toString() y recibo un error porque _.get return null. ¿Cuál es la mejor forma legible de escribir esto?

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

0

El tercer argumento defaultValue solo se devolverá para valores resueltos undefined , no null . ver documentos

Si desea un valor alternativo para null o undefined , use el operador de fusión nulo:

 (_.get(a, "bc") ?? "").toString()

A continuación se muestran diferentes resultados utilizando diferentes mecanismos para definir el valor predeterminado:

 let a; a = { b: null }; _.get(a, "b", ""); // null _.get(a, "b") ?? ""; // "" _.get(a, "b") || ""; // "" a = { }; _.get(a, "b", ""); // "" a = { b: undefined }; _.get(a, "b", ""); // "" a = { b: 0 }; _.get(a, "b") || ""; // "" _.get(a, "b") ?? ""; // 0
about 4 years ago · Juan Pablo Isaza Relatório

0

En

 _.get(a, 'b','');

solicita la propiedad a['b'] , que resulta ser null , que no está undefined , por lo que obtiene null como resultado final. A continuación, en

 _.get(a, null, '');

solicita la propiedad a['null'] , que no existe, por lo que no está undefined , y termina con el valor de reserva '' . Finalmente, con

 let a = {b: {c: {}}}; _.get(a, 'b.c', '');

parece que estás pidiendo a a['b']['c'] , que sería un objeto vacío. Sin embargo, la notación de ruta punteada es específica de Lodash. Si usa el guión bajo, la ruta se interpreta como a['b.c'] de manera predeterminada, que no existe y no está undefined . En ese caso, debería obtener '' como resultado final. No veo forma de que esta expresión pueda dar como resultado null , incluso si está usando el valor original de a = {b: null} .

Si, de hecho, está utilizando el guión bajo y desea recuperar el objeto c anidado dentro de la propiedad b , tiene dos opciones. En primer lugar, puede usar la notación de ruta de matriz, que es portátil entre Underscore y Lodash:

 _.get(a, ['b', 'c'], '');

En segundo lugar, puede anular _.toPath para habilitar la notación de ruta punteada para todas las funciones de guión bajo:

 const originalToPath = _.toPath; _.toPath = function(path) { if (_.isString(path)) return path.split('.'); return originalToPath(path); } _.get(a, 'b.c', '');

No recomendaría esto, porque puede romper el código que intenta recuperar propiedades que contienen el carácter de punto . en el nombre. Lo menciono para completar; usa tu propio juicio.

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