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

64
Vistas
filtro de matriz con lodash para reaccionar nativo

Tengo un objeto de matriz que se ve así:

 [{ sellerId: "seller1", name: "Nike", item: [{ id: "xxx1" isChecked: false price: "719700.00" productName: "product a" quantity: 2 }, { id: "xxx2" isChecked: true price: "219700.00" productName: "product b" quantity: 1 } ], }, { sellerId: "seller2", name: "Adidas", item: [{ id: "xxx1" isChecked: false price: "49700.00" productName: "product x" quantity: 1 }, { id: "xxx2" isChecked: true price: "4700.00" productName: "product y" quantity: 5 } ], }, ]

ahora quiero convertir o filtrar mis datos por isChecked = true en el objeto llamado Item, por lo que se verá así:

 [{ sellerId: "seller1", name: "Nike", item: [ { id: "xxx2" isChecked: true price: "219700.00" productName: "product b" quantity: 1 } ], }, { sellerId: "seller2", name: "Adidas", item: [ { id: "xxx2" isChecked: true price: "4700.00" productName: "product y" quantity: 5 } ], }, ]

EDITADO:

Y luego, SI NO hay isChecked: verdadero en un vendedor, no mostrará los datos del vendedor, por ejemplo, si no hay isChecked en el vendedor de Adidas, esperaba que el objeto se viera así:

 [{ sellerId: "seller1", name: "Nike", item: [ { id: "xxx2" isChecked: true price: "219700.00" productName: "product b" quantity: 1 } ], }, ]

Intenté usar lodash de esta manera, pero aún no elimino el elemento que tiene isChecked: false

_.filter(data, { item: [{ isChecked: false }] })

¿Alguna ayuda sobre cómo puedo hacer eso con lodash o simple javascript filter ()?

¡Gracias!

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

0

Puede utilizar las funciones de filtro y mapa :

 sellers = data.map((d) => {return {...d, item: d.item.filter(i=>i.isChecked)}})

Para los elementos vacíos, puede filtrarlos nuevamente de esta manera:

 filterd_seller = sellers.filter(seller => seller.item.length)

O una mejor respuesta que puede usar reduce :

 data.reduce((filtered, seller) => { const item = seller.item.filter(i => i.isChecked); if (item.length) { filtered.push({...seller, item }); } return filtered; }, []);
about 4 years ago · Juan Pablo Isaza Denunciar

0

Asigne la matriz de objetos (usando lodash o vanilla) y luego recree el objeto mientras filtra cualquier elemento con isChecked: false :

 const arr = [{"sellerId":"seller1","name":"Nike","item":[{"id":"xxx1","isChecked":false,"price":"719700.00","productName":"product a","quantity":2},{"id":"xxx2","isChecked":true,"price":"219700.00","productName":"product b","quantity":1}]},{"sellerId":"seller2","name":"Adidas","item":[{"id":"xxx1","isChecked":false,"price":"49700.00","productName":"product x","quantity":1},{"id":"xxx2","isChecked":true,"price":"4700.00","productName":"product y","quantity":5}]}] const result = arr.map(({ item, ...o }) => ({ ...o, item: item.filter(o => o.isChecked) })) console.log(result)
 .as-console-wrapper { max-height: 100% !important; top: 0; }

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