¿Cómo hago que esta función busque todos los campos en mi matriz en lugar de una sola variable a la vez?
const filteredData = tickets.filter(val => { if (inputText === '') { return val; } else { return val.ticket.ticketNumber.toLowerCase().includes(inputText); // return val.ticket.gallons.toLowerCase().includes(inputText); } });Ejemplo de ticket (haga clic para mostrar)
[ { index: "-N-ecIthFAo6EaEe7BVT", ticket: { appName: "biolime", driver: "Walt", endUser: "Verhoff Farms", field: "Marston-North 40", gallons: "1,237,887", lagoon: "CAMP-3", lagoonMaterial: "Lime Slurry", source: "Campbell's Soup", ticketDate: "04-04-2022", ticketNumber: "5825", ticketTime: "7:26:49.484 am", truck: "", zone: "Zone B", }, }, { index: "-N17TZscKkfW0TYE84WZ", ticket: { appName: "biolime", driver: "Walt", endUser: "Rob Howell", field: "testing", gallons: "9,999", lagoon: "CAMP-3", lagoonMaterial: "Lime Slurry", source: "Campbell's Soup", ticketDate: "04-13-2022", ticketNumber: "5826", ticketTime: "4:35:44.252 pm", truck: "10", zone: "", }, }, ];No necesita verificar inputText === '' cada vez dentro de la devolución de llamada del filtro.
const ticket = [{ "appName": "biolime", "driver": "Walt", "endUser": "Verhoff Farms", "field": "Marston-North 40", "gallons": "1,237,887", "lagoon": "CAMP-3", "lagoonMaterial": "Lime Slurry", "source": "Campbell's Soup", "ticketDate": "04-04-2022", "ticketNumber": "5825", "ticketTime": "7:26:49.484 am", "truck": "", "zone": "Zone B" }, { "appName": "biolime", "driver": "Walt", "endUser": "Rob Howell", "field": "testing", "gallons": "9,999", "lagoon": "CAMP-3", "lagoonMaterial": "Lime Slurry", "source": "Campbell's Soup", "ticketDate": "04-13-2022", "ticketNumber": "5826", "ticketTime": "4:35:44.252 pm", "truck": "10", "zone": "" } ] function filteredData(e) { const filteredData = e.target.value && ticket.filter(val => { return val.ticketNumber.toLowerCase().includes(e.target.value); }); console.log(filteredData) }; <input type="text" onChange="filteredData(event)">¿Tal vez debería recorrer los boletos y devolver uno que haya dado inputText en el campo?
const filteredData = tickets.filter(ticket => { if (inputText === '') { return ticket; } else if (ticket.ticketNumber.toLowerCase().includes(inputText)) { return ticket; } });Si entiendo bien la pregunta...
Como lo sugiere @Barmar , recorra todos los campos de un objeto con Object.values(obj) y pruebe si alguno cumple con la condición con Array.prototype.some() . Pero como dije, debe hacerlo de manera un poco diferente ya que tiene objetos anidados.
const tickets = [{ index: "-N-ecIthFAo6EaEe7BVT", ticket: { appName: "biolime", driver: "Walt", endUser: "Verhoff Farms", field: "Marston-North 40", gallons: "1,237,887", lagoon: "CAMP-3", lagoonMaterial: "Lime Slurry", source: "Campbell's Soup", ticketDate: "04-04-2022", ticketNumber: "5825", ticketTime: "7:26:49.484 am", truck: "", zone: "Zone B", }, }, { index: "-N17TZscKkfW0TYE84WZ", ticket: { appName: "biolime", driver: "Walt", endUser: "Rob Howell", field: "testing", gallons: "9,999", lagoon: "CAMP-3", lagoonMaterial: "Lime Slurry", source: "Campbell's Soup", ticketDate: "04-13-2022", ticketNumber: "5826", ticketTime: "4:35:44.252 pm", truck: "10", zone: "", }, }, ]; const filterHelper = (ticket, inputText) => { if (inputText === '') { return true; } else { return Object.values(ticket).some((property) => { if (typeof property === 'string' || property instanceof String) { return property.toString().toLowerCase().includes(inputText); } else return filterHelper(property, inputText); }); } }; const filter = (tickets, inputText) => tickets.filter((ticket) => filterHelper(ticket, inputText)); //const filteredData = filter(tickets, "5825"); //console.log(filteredData); const inputTextInput = document.querySelector("#inputText"); document.querySelector("#form").addEventListener("submit", (e) => { e.preventDefault(); const inputText = inputTextInput.value; const filteredData = filter(tickets, inputText); console.log(filteredData); }); <form id="form"> <input id="inputText" placeholder="filter" /> <button type="submit">filter</button> </form>