Estoy tratando de resumir valores dentro de un objeto, pero estoy agregando un operador coalescente nulo si no está definido o es nulo, entonces debería tener un valor cero. Pero aquí, en lugar de obtener 10, obtengo solo 4.
let data = { a: 4, b: 6, c: null } console.log(data?.a ?? 0 + data?.b ?? 0 + data?.c ?? 0)Cualquier ayuda es apreciada
Simplemente agregue pequeños corchetes, esto servirá. La razón por la que no se ejecuta arriba es porque el ?? el operador es condicional y evaluará la primera declaración ya que hay valor para data?.a no ejecutará la parte correcta, que es 0 + data?.b ?? 0 + data?.c ?? 0
let data = { a: 4, b: 6, c: null } console.log((data?.a ?? 0) + (data?.b ?? 0) + (data?.c ?? 0))esto funcionará
console.log((data?.a ?? 0) + (data?.b ?? 0) + (data?.c ?? 0))Estuche ideal para reducir .
Object.value+ para la conversión de tipo elegante (puede que no funcione en todos los casos) console.log(Object.values(data).reduce(function (sum, value) { return sum + +value }, 0))Una buena práctica es aprender de las bibliotecas de utilidad/ayuda como lodash o ramda . Lodash también proporciona una buena solución