Dado el siguiente objeto, me gustaría buscar varias cadenas en todas las claves. He estado intentando y buscando y no he encontrado nada en este caso. ¿Alguien puede ayudarme aquí?
Buscando esto:
const array = [ { name: "Blue Iron Chow Chow", status: "Complete", creator: "John" }, { name: "Purple Steel Husky", status: "Error", creator: "Chris" }, { name: "Purple Composite Husky", status: "Ready", creator: "Chris" }, { name: "Aqua Zinc Spaniel", status: "Complete", creator: "Chris" }, { name: "Fuschia Silver Corgi", status: "Complete", creator: "John" }, ];Para esta matriz de cadenas:
const query = ['chris', 'com'];Devolvería una serie de resultados como este:
[ { name: "Aqua Zinc Spaniel", status: "Complete", creator: "Chris" }, { name: "Purple Composite Husky", status: "Ready", creator: "Chris" }, ]Por favor, hágamelo saber si no estoy siendo claro en esto. ¡Gracias!
// ACTUALIZAR
Tenga en cuenta que lo clave que estoy buscando es que cada objeto debe poder buscarse con CUALQUIER clave (no solo el creador) y tener TODAS las cadenas de búsqueda en el objeto, no solo una u otra.
const array = [{ name: "Blue Iron Chow Chow", status: "Complete", creator: "John" }, { name: "Purple Steel Husky", status: "Error", creator: "Chris" }, { name: "Purple Composite Husky", status: "Ready", creator: "Chris" }, { name: "Aqua Zinc Spaniel", status: "Complete", creator: "Chris" }, { name: "Fuschia Silver Corgi", status: "Complete", creator: "John" }, ]; const query = ['chris', 'com']; const filtered = array.filter(obj => { return query.every(val => Object.values(obj).join(" ").toLowerCase().includes(val.toLowerCase())) }) console.log(filtered)const array = [ { name: "Blue Iron Chow Chow", status: "Complete", creator: "John" }, { name: "Purple Steel Husky", status: "Error", creator: "Chris" }, { name: "Purple Composite Husky", status: "Ready", creator: "Chris" }, { name: "Aqua Zinc Spaniel", status: "Complete", creator: "Chris" }, { name: "Fuschia Silver Corgi", status: "Complete", creator: "John" }, ]; let filtered = [] array.map((x)=>{ //x contains individual objects of array, for (let key in x) { //key in x will get all the keys inside the x , now all we have to check is does the values in x are included in query or not to find that we use the below code const contains = ['Chris', 'com'].includes(x[key]) console.log(contains) if(contains) filtered.push(x) } })const array = [ { name: "Blue Iron Chow Chow", status: "Complete", creator: "John" }, { name: "Purple Steel Husky", status: "Error", creator: "Chris" }, { name: "Purple Composite Husky", status: "Ready", creator: "Chris" }, { name: "Aqua Zinc Spaniel", status: "Complete", creator: "Chris" }, { name: "Fuschia Silver Corgi", status: "Complete", creator: "John" }, ]; const query = ['chris', 'com']; var result = array.filter(({creator, name, status}) => { return query.every(item => { item = item.toLowerCase(); return creator.toLowerCase().includes(item) || name.toLowerCase().includes(item) || status.toLowerCase().includes(item) }) });producción:-
[ { name: 'Purple Composite Husky', status: 'Ready', creator: 'Chris' }, { name: 'Aqua Zinc Spaniel', status: 'Complete', creator: 'Chris' } ]