No entiendo por qué esta llamada de filtro no funciona. debería devolver el único artículo que tiene la factura de 100 dólares, pero en su lugar está enviando un juego vacío. ¿Qué estoy haciendo mal?
const express = require('express'); const app = express(); app.listen(3000); app.use(express.static('public')); app.set('view engine', 'ejs'); const invoices = [ { INVOICE_AMOUNT: 50 }, { INVOICE_AMOUNT: 100 }, { INVOICE_AMOUNT: 200 } ]; app.get('/', (req, res) => { res.send(invoices.filter(x=>{x.INVOICE_AMOUNT==100})); });El método de filter necesita un valor de retorno que sea verdadero o falso. Si devuelve un valor verdadero, conserva el elemento; de lo contrario, lo filtra.
Dado que no tiene una declaración de devolución ni tiene una función de matriz sin paréntesis, siempre devuelve indefinido y filtra todos los elementos. Las soluciones son:
invoices.filter(x => { return x.INVOICE_AMOUNT == 100 }) // or invoices.filter(x => x.INVOICE_AMOUNT == 100)En el primer caso, hay una declaración de retorno explícita, en el segundo caso, la omisión de los paréntesis utiliza una declaración de retorno implícita.