BuscaRecursivo.js
Busca un valor proporcionado dentro de un arreglo de objetos.
by eorozco
JavaScript
let actores = [
{"nombre":"nombre 1",
"contactos":[
{"tipo":"EMAIL","contacto":"[email protected]"},
{"tipo":"TELEFONO","contacto":"1234567890"},
{"tipo":"CELULAR","contacto":"1111111111"},
]},
{"nombre":"nombre 2",
"contactos":[
{"tipo":"EMAIL","contacto":"[email protected]"},
{"tipo":"TELEFONO","contacto":"1134567890"},
{"tipo":"CELULAR","contacto":"1211111111"},
]},
];
// Esto es lo que vamos a buscar
let muestra = "1111111111";
muestra = muestra.toLowerCase(); //Pasamos a minúsculas para homologar el case al buscar.
/**
* La idea es filtrar sobre las llaves de los objetos del arreglo, en este caso actores, e iterar recursivamente
* por todos los valores hasta encontrar el valor buscado. La función regresa finalmente el contacto coincidente...
* Sólo funciona para indicarnos si existe o no un valor repetido entre los contactos
* @return Regresa boolean, true si ya existe, false si no existe el valor muestra en el arreglo de objetos
*/
let yaExiste = !! actores.filter(function buscar(actor) {
return Object.keys(actor).some((key) => {
if(typeof actor[key] === "string") {
return actor[key].toLowerCase() === muestra;
} else if(actor[key] && typeof actor[key] === "object") {
return buscar(actor[key]);
}
return false;
});
}).length;
console.log(yaExiste);