Quantcast
Channel: ¿Como filtrar correctamente un Array de Objetos en JavaScript? - Stack Overflow en español
Viewing all articles
Browse latest Browse all 3

¿Como filtrar correctamente un Array de Objetos en JavaScript?

$
0
0

Tengo una función que hice para filtrar objetos dentro de un Array principal. Esta lo que hace es sacar los resultados en objetos separados, (todos los objetos del array principal) luego con Object.keys(obj).some() lo que hago es obtener todos los valores de las keys de los objetos y con obj[key].includes(searchKey) verifico si algún valor incluye el termino de búsqueda (searchKey). Mirar codigo.

El problema:

El inconveniente esta en que solo me retorna el termino especifico de solo un objeto, esto quiere decir:

  • Si busco el termino "doc" me retorna los dos objetos esperados dentro del Array retornado ya que los valores de las keys correspondientes coinciden con el termino de búsqueda.

  • Si busco el termino "document" me retorna el Array esperado con solo un objeto ya que es el termino especifico y solo encuentra un resultado ya que solo coincide con un valor.

  • PERO: Si busco el termino "docs" o un termino que no coincida (tomado en cuenta que "docs" si es un valor existete) me retorna el siguiente error:

    obj[key].includes is not a function.

El código:

Cambia los valores de búsqueda (docs, document, null) para observar el error en la consola.

NOTA: Puedes observar como está estructurado el Array principal en el código.

// Array principalvar dictionary = [  {"name": "document","classes" : {"getElementById": "getElementById()","getElementsByClassName": "getElementsByClassName"    }  },  {"name": "docs","classes": "holo"  },  {"name": "null","classes": "null"  }];// Funciónfunction filterIt(arr, searchKey) {  return arr.filter(function(obj) {    return Object.keys(obj).some(function(key) {      return obj[key].includes(searchKey);    })  });}//LOG// Editar el string para buscar otro termino.console.log(filterIt(dictionary, "docs"))

Conjeturas:

A simple vista parece que como si no existiera el valor, pero al comprobar haciendo un log de obj[key] dentro de some() puedo observar que se imprimen todos los valores de las keys de todos los objetos. Lo que me lleva a pensar, ¿Puede que me falte algún loop o algo por el estilo?

Muchas gracias.


Viewing all articles
Browse latest Browse all 3

Latest Images

Trending Articles





Latest Images