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

350
Vistas
¿Cuál es la mejor manera de encontrar el índice de un elemento dentro de una matriz y esa matriz está dentro de otra?

Me preguntaba cuál es la mejor manera de encontrar el índice de un elemento que se encuentra dentro de una matriz y esa matriz se encuentra dentro de otra matriz.

Este es el tipo de datos que tengo:

 const list = [ { id: 1, items: [ { name: "milk", id: 99 }, { name: "water", id: 33 } ] }, { id: 4, items: [ { name: "oranges", id: 22 }, { name: "patatoes", id: 13 } ] } ];

Digamos que quiero saber el índice del artículo con el nombre "leche", ya sé la identificación del objeto principal (1) y también sé la identificación del artículo (99).

Mi objetivo es cambiar el nombre del artículo de "leche" a "queso". Mi primera idea fue hacerlo así:

 const firstObjectIndex = arr.findIndex(el => el.id === 1) if(firstObjectIndex !== -1){ const itemIndex = arr[firstObjectIndex].items.findIndex(item => item.id === 99) if(itemIndex !== -1){ // this is where I change the name to cheese arr[firstObjectIndex].items[itemIndex].name = 'Cheese' } }

El método que usé anteriormente hace el trabajo, pero me pregunto si hay una mejor manera de hacerlo en JavaScript. Cualquier ayuda sería muy apreciada

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Realmente no necesita el índice, sino el objeto en sí. Por lo tanto, use Array#find . Esto permite que ambas búsquedas se combinen fácilmente en una declaración con el operador de encadenamiento opcional .

 const list=[{id:1,items:[{name:"milk",id:99},{name:"water",id:33}]},{id:4,items:[{name:"oranges",id:22},{name:"patatoes",id:13}]}]; let obj = list.find(x => x.id === 1)?.items.find(y => y.name === 'milk'); if(obj) obj.name = 'Cheese'; console.log(list);

about 4 years ago · Juan Pablo Isaza 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