Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

112
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!