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

176
Vistas
Comparando dos matrices de objetos y eliminando cuando dos coinciden

Me preguntaba si alguien me podría ayudar. Estoy usando React y tengo dos matrices de objetos:

  • uno para todos los tiempos de reserva posibles
  • el otro para reservas existentes.

Estoy luchando por encontrar una manera de recorrer con éxito la matriz allSlots y eliminar cualquiera que tenga un tiempo coincidente dentro de la matriz de Reservas existingBookings .

En el siguiente ejemplo, hay reservas existentes a las 10:00 a. m., 10:40 a. m., 11:00 a. m. y 11:20 a. m.

La salida esperada solo dejaría las 10:20 a. m. y las 11:40 a. m. de la matriz original.

 const allSlots = [
 {
 date: "28 Sept 22",
 time: "10:00am"
 },
 {
 date: "28 Sept 22",
 time: "10:20am"
 },
 {
 date: "28 Sept 22",
 time: "10:40am"
 },
 {
 date: "28 Sept 22",
 time: "11:00am"
 },
 {
 date: "28 Sept 22",
 time: "11:20am"
 },
 {
 date: "28 Sept 22",
 time: "11:40am"
 }
 ];

 const existingBookings = [
 {
 time: "10:00am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Bq4b3uz129aE2D5TCbaOiLQJrvC2",
 date: "28 Sept 22"
 },
 {
 time: "11:00am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Ko2LdnQAdaE2OiLQJrvC2D5TCbA",
 date: "28 Sept 22"
 },
 {
 time: "10:40am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Ko2LdnQAdaE2OiLQJrvC2D5TCbA",
 date: "28 Sept 22"
 },
 {
 time: "11:20am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "iLQJrKo2LdCbnQAdaE2OvC2D5TA",
 date: "28 Sept 22"
 }
 ];

Originalmente filtré los datos de las reservas existingBookings para eliminar cualquiera que no coincidiera con la fecha seleccionada con:

 const existingBookings = allBookings.filter(
 (booking) => booking.date === selectedDate
);

Sin embargo, estoy luchando para manipular más las cosas. Realmente aprecio cualquier idea y ayuda que pueda brindar.

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

0

Esto debería funcionar.

 const newAllSlots = allSlots.filter((slot)=>{
 const iSInExistingBookings = existingBookings.find(booking=>booking.time === slots.time && booking.date === slots.date)
 return !iSInExistingBookings
 })
almost 4 years ago · Santiago Trujillo Denunciar

0

Es tan simple como hacer

 freeSlots=allSlots.filter(s=>
 existingBookings.every(e=>e.time!=s.time||e.date!=s.date)
)

Aquí hay un fragmento de JavaScript de trabajo (simple):

 const allSlots = [
{
 date: "28 Sept 22",
 time: "10:00am"
},
{
 date: "28 Sept 22",
 time: "10:20am"
},
{
 date: "28 Sept 22",
 time: "10:40am"
},
{
 date: "28 Sept 22",
 time: "11:00am"
},
{
 date: "28 Sept 22",
 time: "11:20am"
},
{
 date: "28 Sept 22",
 time: "11:40am"
}
 ];

const existingBookings = [
{
 time: "10:00am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Bq4b3uz129aE2D5TCbaOiLQJrvC2",
 date: "28 Sept 22"
},
{
 time: "11:00am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Ko2LdnQAdaE2OiLQJrvC2D5TCbA",
 date: "28 Sept 22"
},
{
 time: "10:40am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "Ko2LdnQAdaE2OiLQJrvC2D5TCbA",
 date: "28 Sept 22"
},
{
 time: "11:20am",
 propertyID: "XQPvl7MmLVNtxHdSRfDq",
 userID: "iLQJrKo2LdCbnQAdaE2OvC2D5TA",
 date: "28 Sept 22"
}
 ];

const freeSlots=allSlots.filter(s=>
 existingBookings.every(e=>e.time!=s.time||e.date!=s.date)
)

console.log(freeSlots);

almost 4 years ago · Santiago Trujillo Denunciar

0

Desea filtrar su matriz allSlots para que solo contenga espacios que no están presentes en las reservas existingBookings

 const unusedSlots = allSlots.filter((slot) => {
 // See if the slot is booked
 const isBooked = existingBookings.some(
 (booking) => booking.time == slot.time && booking.date == slot.date
 )

 // Only keep free slots
 return !isBooked
});
almost 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