Me gustaría saber cómo obtener la lista de matrices de objetos en función de los valores que coinciden en javascript
Si alguno de los valores del objeto coincide con el parámetro, devuelva esa matriz en javascript.
var objarr = [ {id:1, email: 'xyz@gmail.com', value: 10, name: 'ram'}, {id:2, email: 'xyz@gmail.com', value: 20, name: 'Tom'}, {id:3, email: 'ss@gmail.com', value: 30, name: 'Lucas'}, {id:4, email: 'ct@gmail.com', value: 40, name: 'Chris'}, {id:5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim'} ] function getList(val){ var result=[]; var checkdata = objarr.filter(e=>{ if(Object.values(e)===val){ result.push(e); } return result; }) } console.log(result); Expected Output: getList('xyz@gmail.com'); scenario 1: [ {id:1, email: 'xyz@gmail.com', value: 10, name: 'ram'}, {id:2, email: 'xyz@gmail.com', value: 20, name: 'Tom'} ] scenario 2: getList('Chris'); [ {id:4, email: 'ct@gmail.com', value: 40, name: 'Chris'} ]Su función Array.filter debería devolver true o false según los criterios de búsqueda.
Object.values devuelve un Array como salida. Para verificar si un valor está en una matriz, puede usar Array.includes .
Debe comprobar el valor con Object.values(e).includes(val)
violín de trabajo
var objarr = [ { id: 1, email: 'xyz@gmail.com', value: 10, name: 'ram' }, { id: 2, email: 'xyz@gmail.com', value: 20, name: 'Tom' }, { id: 3, email: 'ss@gmail.com', value: 30, name: 'Lucas' }, { id: 4, email: 'ct@gmail.com', value: 40, name: 'Chris' }, { id: 5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim' } ] function getList(val) { var checkdata = objarr.filter(e => { if (Object.values(e).includes(val)) { return true; } return false; }) return checkdata; } console.log(getList('xyz@gmail.com')); console.log(getList('Chris'));Versión simplificada
var objarr = [ { id: 1, email: 'xyz@gmail.com', value: 10, name: 'ram' }, { id: 2, email: 'xyz@gmail.com', value: 20, name: 'Tom' }, { id: 3, email: 'ss@gmail.com', value: 30, name: 'Lucas' }, { id: 4, email: 'ct@gmail.com', value: 40, name: 'Chris' }, { id: 5, email: 'tam@gmail.com', value: 30, name: 'Lucas Tim' } ] const getList = (val) => objarr.filter(e => Object.values(e).includes(val)) console.log(getList('xyz@gmail.com')); console.log(getList('Chris'));Puede usar el filter y usar Object.values para obtener todos los valores de un objeto y luego usar some para obtener el resultado deseado.
ONE LINER
objarr.filter((o) => Object.values(o).some((v) => v === val)); var objarr = [ { id: 1, email: "xyz@gmail.com", value: 10, name: "ram" }, { id: 2, email: "xyz@gmail.com", value: 20, name: "Tom" }, { id: 3, email: "ss@gmail.com", value: 30, name: "Lucas" }, { id: 4, email: "ct@gmail.com", value: 40, name: "Chris" }, { id: 5, email: "tam@gmail.com", value: 30, name: "Lucas Tim" }, ]; const getList = val => objarr.filter((o) => Object.values(o).some(v => v === val)); console.log(getList("xyz@gmail.com")); console.log(getList("Chris")); /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }