¿Es posible hacer este tipo de código en el operador ternario en javascript? En caso afirmativo, creo que lo estoy haciendo mal, cuando probé el código a continuación, lo escribí simplemente devolvió el método de function(){}
let products = [ { price: 2.6, quantity: 5, }, { price: 5.9, quantity: 5, }, { price: 2.3, quantity: 5, }, { price: 4.9, quantity: 5, } ]; let sumtotal = products.length > 1 ? function(){ let total = 0; for(const { price, quantity } of products) { total += (price * quantity); } return parseFloat(total).toFixed(2); } : function() { let total = (products[0].price * products.quantity); return parseFloat (total).toFixed(2); }; console.log(sumtotal); Esperaba que esto devolviera un valor real como si la salida fuera Integer o float .
"Esperaba que esto devolviera un valor real como si la salida fuera un número entero o flotante".
Puede envolver la definición de su función entre paréntesis y llamarla con () inmediatamente después. Un IIFE. Ya tienes return así que estás bien en esa parte.
CON CAMBIOS:
let sumtotal = products.length > 1 ? (function(){ let total = 0; for(const { price, quantity } of products) { total += (price * quantity); } return parseFloat(total).toFixed(2); })() : (function() { let total = (products[0].price * products.quantity); return parseFloat (total).toFixed(2); })();Con los IIFE en su lugar, las funciones se ejecutarán donde estén. No he verificado ninguna otra parte de su código, por lo que esta solución es solo para la parte "devolver un valor real como si la salida fuera un número entero o flotante".