Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

363
Vistas
¿Cómo encontrar un valor en una matriz de objetos en JavaScript?

Tengo una serie de objetos:

 Object = { 1 : { name : bob , dinner : pizza }, 2 : { name : john , dinner : sushi }, 3 : { name : larry, dinner : hummus } }

Quiero poder buscar en el objeto/matriz dónde está la clave "cena" y ver si coincide con "sushi".

Sé que jQuery tiene $.inArray, pero no parece funcionar en matrices de objetos. O tal vez estoy equivocado. indexOf también parece funcionar solo en un nivel de matriz.

¿No hay ninguna función o código existente para esto?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Si tienes una matriz como

 var people = [ { "name": "bob", "dinner": "pizza" }, { "name": "john", "dinner": "sushi" }, { "name": "larry", "dinner": "hummus" } ];

Puede usar el método de filter de un objeto Array:

 people.filter(function (person) { return person.dinner == "sushi" }); // => [{ "name": "john", "dinner": "sushi" }]

En las implementaciones de JavaScript más nuevas, puede usar una expresión de función:

 people.filter(p => p.dinner == "sushi") // => [{ "name": "john", "dinner": "sushi" }]

Puedes buscar personas que tienen "dinner": "sushi" usando un map

 people.map(function (person) { if (person.dinner == "sushi") { return person } else { return null } }); // => [null, { "name": "john", "dinner": "sushi" }, null]

o una reduce

 people.reduce(function (sushiPeople, person) { if (person.dinner == "sushi") { return sushiPeople.concat(person); } else { return sushiPeople } }, []); // => [{ "name": "john", "dinner": "sushi" }]

¡Estoy seguro de que puede generalizar esto a claves y valores arbitrarios!

over 4 years ago · Santiago Trujillo Denunciar

0

jQuery tiene un método jQuery.grep que funciona de manera similar a la función de filter ES5 de @adamse's Answer y debería funcionar bien en navegadores más antiguos.

Usando el ejemplo de Adamse:

 var peoples = [ { "name": "bob", "dinner": "pizza" }, { "name": "john", "dinner": "sushi" }, { "name": "larry", "dinner": "hummus" } ];

puedes hacer lo siguiente

 jQuery.grep(peoples, function (person) { return person.dinner == "sushi" }); // => [{ "name": "john", "dinner": "sushi" }]
over 4 years ago · Santiago Trujillo Denunciar

0

Si va a realizar esta búsqueda con frecuencia, considere cambiar el formato de su objeto para que la cena sea realmente una clave. Esto es como asignar una clave principal agrupada en una tabla de base de datos. Así por ejemplo:

 Obj = { 'pizza' : { 'name' : 'bob' }, 'sushi' : { 'name' : 'john' } }

Ahora puede acceder fácilmente de esta manera: Object['sushi']['name']

O si el objeto realmente es así de simple (solo 'nombre' en el objeto), podría cambiarlo a:

 Obj = { 'pizza' : 'bob', 'sushi' : 'john' }

Y luego acceda a él como: Object['sushi'] .

Obviamente, no siempre es posible o ventajoso reestructurar su objeto de datos de esta manera, pero el punto es que, a veces, la mejor respuesta es considerar si su objeto de datos está estructurado de la mejor manera. Crear una clave como esta puede ser más rápido y crear un código más limpio.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda