Tengo la siguiente matriz:
const cars = [ { make: 'Toyota', model: '4Runner', bodyType: 'SUV' }, { make: 'Audi', model: 'A4', bodyType: 'Sedan' }, { make: 'Ford', model: 'F-150', bodyType: 'Truck' }, ]Me gustaría enviar la matriz de autos cuando visite el punto final de /cars. Pero cuando el usuario agrega una consulta al punto final como /cars?bodyType=SUV, solo debe devolver los elementos filtrados.
Hasta ahora tengo:
app.get('/cars', (req, res) => { const bodyType = req.query.bodyType const filteredCars = cars.filter((car) => car.bodyType === bodyType) res.send(req.query === ? cars : filteredCars) })Sé que probablemente estoy muy lejos.
El siguiente código funciona en bucle a través de todas las claves de la consulta y lo compara con el objeto del automóvil.
app.get('/', (req, res) => { const filter = req.query const haveFilters = Object.keys(filter).length let filteredCars = cars if(haveFilters){ filteredCars = cars.filter((car) => { for(let key in filter){ if(car[key] !== filter[key]) return false } return true }) } res.send(filteredCars) })