Tengo un problema aquí para obtener mis datos. Así que quiero filtrar cualquiera que tenga un estado de factura de "Draft"
o "Ready to Bill"
, o "Cancelled"
o si su estado de invoice_status is null AND status is null
Todo se está filtrando correctamente, excepto que los datos que tienen tanto el estado de la invoice_status is null AND status is null
no se están filtrando. ¿Cuál es el problema con mi código a continuación?
console.log( "data...", this.props.partnerOrders.filter( r => (r.invoice_status !== "Draft" && r.invoice_status !== "Ready to Bill" && r.invoice_status !== "Cancelled") || (r.invoice_status !== null && r.status !== null) ) );
Su condición de filtro en el código se escribe como la negación (opuesta) de su condición como palabras, para que sea true
cuando se deba mantener el elemento. Su afirmación se niega correctamente excepto: ! invoice_status is null AND status is null
no es (r.invoice_status !== null && r.status !== null)
, es (r.invoice_status !== null || r.status !== null)
.
Esta es una regla general: !(A && B) == (!A || !B)
, ver reglas de negación .
Dado que desea filtrar el estado de la invoice_status is null AND status is null
, cuando invierte la lógica, según el teorema de deMorgan, obtiene el estado de la factura invoice_status is not null OR status is not null
. Cambiando su &&
final a un ||
debería hacer el truco