• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

114
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.

over 2 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
 })
over 2 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);

over 2 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
});
over 2 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 Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda