Quiero mostrar dollar
para ventas brutas, descuentos, impuestos, ventas netas . Pero mi código a continuación muestra dólares solo para ventas brutas .
mi código
tableHeadings = [ "month", "orders", "gross_sales", "discounts", "tax", "net_sales", ] reportData = [ { "orders": 119, "gross_sales": 21819.610000000008, "net_sales": 21819.610000000008, "discounts": 865.82, "tax": 0, "month": "October 2021" }, { "orders": 7, "gross_sales": 4542.4, "net_sales": 4542.4, "discounts": 40, "tax": 0, "month": "September 2021" }]
mesa
<tbody> {reportData.length > 0 && tableHeadings.length > 0 && reportData.map((element, index) => ( <tr key={index}> {tableHeadings.map((item, idx) => ( <td key={idx}> {item === ('gross_sales' || 'discounts' || 'tax' || 'net_sales' || 'average_amount' || 'total_spent') && dollar}{' '} {element[item]} </td> ))} </tr> ))} </tbody>;
la página actual se ve como abajo, la página actual
comportamiento esperado expectativa
debería ser
(item === 'gross_sales' || item === 'discounts' || item === 'tax' || item === 'net_sales' || item === 'average_amount' || item === 'total_spent')
¿Cuál es el problema con su sintaxis?
usted está comprobando con
item === ('gross_sales' || 'discounts' || 'tax' || 'net_sales' || 'average_amount' || 'total_spent')
Lo que esto hará es evaluar la expresión
console.log('gross_sales' || 'discounts' || 'tax' || 'net_sales' || 'average_amount' || 'total_spent')
Su salida será 'gross_sales'
que es la primera cadena. Entonces su expresión solo funciona con 'gross_sales'
. Por lo demás, el valor será falso.
Solo está comparando artículos === "ventas_brutas", o necesita comparar cada uno por separado
Ex: item === "gross_sales" || item === "discounts" etc.
Pero la mejor solución es poner estas opciones en una matriz y luego arrayName.includes(item)
, debería dar el resultado esperado.
El problema es que no puede agrupar valores OR como lo hizo. Debe indicar la igualdad de item
para cada valor.
<tbody> {reportData.length > 0 && tableHeadings.length > 0 && reportData.map((element, index) => ( <tr key={index}> {tableHeadings.map((item, idx) => ( <td key={idx}> {(item === 'gross_sales' || item === 'discounts' || item === 'tax' || item === 'net_sales' || item === 'average_amount' || item === 'total_spent') && dollar}{' '} {element[item]} </td> ))} </tr> ))} </tbody>;
Lo que hizo en esa instrucción OR siempre devuelve una cadena de gross_sales
.
Esto se debe a que gross_sales
es real y nunca irá al resto de los valores. Es por eso que solo coincide con 'gross_sales'
console.log(('gross_sales' || 'discounts' || 'tax' || 'net_sales' || 'average_amount' || 'total_spent')) // logs: 'gross_sales