Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

99
Visualizações
Filtrar matrices múltiples

Tengo un objeto que simula las relaciones de una base de datos con varias matrices y quiero una venta que tenga un género musical (en este caso, la venta con id: 1), pero mi código devuelve todas las ventas. Uso los métodos de filtro y mapa para simular una selección y unión desde SQL.

 const db = { events: [ { id: "1", name: "Rock in Rio 2020", genre: "Music", }, { id: "2", nome: "World Cup 2022", genre: "Sport", }, ], tickets: [ { id: "1", eventId: "1", name: "Day 3", description: "Music Concert", }, { id: "2", eventId: "1", name: "France x Brazil", description: "Football Match", }, ], sales: [ { id: "1", ticketId: "1", value: "100", }, { id: "2", ticketId: "2", value: "200", }, ], }; const musicSales = db.sales.filter((sale) => { return db.tickets.map((ticket) => { return db.events.map((event) => { return ( sale.ticketId === ticket.id && event.id === ticket.eventId && event.genre === "Music" ); }); }); }); console.log(musicSales);

¿Algúna idea de cómo arreglar esto?

about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Si su intención es recuperar una lista de ventas que tienen entradas para eventos de música, simplemente puede usar el filter y evitar el mapeo.

Por ejemplo

 const musicSales = db.sales.filter((sale) => { const ticket = db.tickets[sale.ticketId]; const event = db.events[ticket.eventId]; return event.genre === "Music"; });

Esto filtra las ventas, buscando el ticket de cada venta y el evento de cada ticket.

Tenga en cuenta que este código asume que cada venta tiene un boleto correspondiente y que cada boleto tiene un evento correspondiente. Si estas suposiciones no se cumplen, deberá agregar algunas declaraciones if para verificar si existen las entradas y los eventos.

about 4 years ago · Juan Pablo Isaza Relatório

0

Podrías intentar cualquiera de los siguientes:

 const musicSales = db.events.filter(event => event.genre == 'Music').map(event => db.sales.find(sale => sale.id == event.id));
O
 const musicSales = db.events.map(event => { if(event.genre == 'Music'){ return db.sales.find(sale => sale.id == event.id); } });.filter(Boolean);
about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que está tratando de obtener todas las ventas correspondientes a un boleto con ID de evento 1.

Si ese es el caso, puedes hacer:

 const musicSales db.sales.filter(sale => sale.ticketId in db.tickets.filter(ticket => ticket.eventId === "1"));

La devolución de llamada del filtro de tickets devuelve verdadero si el ticket tiene eventId igual a "1".

La devolución de llamada del filtro de ventas devuelve verdadero si la venta tiene ticketId dentro del resultado del filtro de boletos.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda