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

127
Vistas
obtener una matriz de valor de objeto y una matriz anidada de valor de objeto

Tengo esta matriz anidada de matriz de objetos:

 const items = [ { id: 1, name: 'banana', selected: true, }, { id: 2, subItems: [ { id: '2a', name: 'apple', selected: true, }, { id: '2b', name: 'orange', selected: false, }, ], }, { id: 3, name: 'watermalon', selected: true, }, { id: 4, name: 'pear', selected: false, }, ]

¿Cómo puedo obtener la base de ids en la propiedad selected ?

Me las arreglé para obtener el primer nivel, lo he intentado

 const selectedItemId = items.map(item => item.selected && item.id).filter(Boolean)

pero, ¿cómo puedo seleccionar las identificaciones que están en los subelementos? Espero que el resultado sea [1, '2a', 3]

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

0

Aplane la matriz primero. Tenga cuidado al usar && item.id dentro del mapeador porque eso significará que se excluirán las identificaciones falsas (como 0, que es un número inicial razonable en algunos esquemas).

 const items=[{id:1,name:"banana",selected:!0},{id:2,subItems:[{id:"2a",name:"apple",selected:!0},{id:"2b",name:"orange",selected:!1}]},{id:3,name:"watermalon",selected:!0},{id:4,name:"pear",selected:!1}]; const output = items .flatMap(item => [item].concat(item.subItems ?? [])) .filter(item => item.selected) .map(item => item.id); console.log(output);

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede recorrer recursivamente todos los elementos y seleccionar los elementos que se han selected establecidos en true .

 const items = [ { id: 1, name: "banana", selected: true }, { id: 2, subItems: [ { id: "2a", name: "apple", selected: true }, { id: "2b", name: "orange", selected: false }, ], }, { id: 3, name: "watermalon", selected: true }, { id: 4, name: "pear", selected: false }, ]; function getSelectedItems(items, selectedItems = []) { for (let item of items) { if (item.subItems) { getSelectedItems(item.subItems, selectedItems); } else if (item.selected) { selectedItems.push(item.id); } } return selectedItems; } console.log(getSelectedItems(items));

about 4 years ago · Juan Pablo Isaza Denunciar

0

 let newArray = []; items.forEach(i=>{ if(i.selected){ newArray.push(i.id) } if(i.subItems){ i.subItems.forEach(j=>{ if(j.selected){ newArray.push(j.id) } }) } });

así que esto es un poco largo. con 2 bucles de mapa

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