así que tengo estos datos en una matriz y solo necesito que aparezca [ {apellido_paterno:"algo",nombre: "jose"}] en la salida, pero muestra los 3 objetos
let data = [{nombre: 'joselyn',apellido_paterno:'poblete'}, {nombre:'jose',apellido_paterno:'algo'}, {nombre:'ernesto',apellido_paterno:'joseludo'}] const filtro = 'jose' data = data.filter((row) =>{ const nombreCompleto = `${row.nombre}${row.apellido_paterno}`.toLowerCase() const nombreCompletoReves = `${row.apellido_paterno}${row.nombre}`.toLowerCase() const nombreTrimmed = filtro.replace(/\s+/g, '').toLowerCase() return nombreCompleto.includes(nombreTrimmed) || nombreCompletoReves.includes(nombreTrimmed); }) console.log(data) // expected output [{apellido_paterno:"algo",nombre: "jose"}] // output [{apellido_paterno: "poblete",nombre: "joselyn"},{apellido_paterno:"algo",nombre: "jose"}, // {apellido_paterno: "joseludo",nombre: "ernesto"}]Si entiendo correctamente, desea filtrar el objeto donde el nombre es jose . Puede simplemente .filter() en los datos. Como esto
let data = [{ nombre: 'joselyn', apellido_paterno: 'poblete' }, { nombre: 'jose', apellido_paterno: 'algo' }, { nombre: 'ernesto', apellido_paterno: 'joseludo' } ] const filtro = 'jose' data = data.filter(x => x.nombre == filtro); console.log(data)Aquí está el código de trabajo
let data = [ { nombre: "joselyn", apellido_paterno: "poblete" }, { nombre: "jose", apellido_paterno: "algo" }, { nombre: "ernesto", apellido_paterno: "joseludo" }, // line added by me to demonstrate the first example { nombre: "javier", apellido_paterno: "jose rodrigo" } ]; const filtro = "jose"; console.log("filtro wrapped by spaces in any part of row.nombre or row.apellido_paterno", data.filter(row => (row.nombre + " " + row.apellido_paterno) .toLowerCase() .split(" ") .includes(filtro) ) ); console.log("filtro strictly matches row.nombre or row.apellido_paterno", data.filter(row => row.nombre == filtro || row.apellido_paterno == filtro ) );