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

133
Vistas
¿La mejor manera de obtener valores únicos de 2 matrices con una estructura diferente?

Tengo 2 matrices como esta:

 blockedUsers = ['u1', 'u2', 'u3'] videoList = [ { id: 1, mp4URL: '...mp4', user: { id: 'u1', name: 'User 1' } }, { id: 2, mp4URL: '...mp4', user: { id: 'u2', name: 'User 1' } }, { id: 3, mp4URL: '...mp4', user: { id: 'u5', name: 'User 1' } } ]

Quiero eliminar a los usuarios bloqueados de la matriz de video. Al final, obtendré una matriz con 1 video de u5. ¿Como hacer eso?

Gracias

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

0

Filtre los elementos donde la identificación del usuario no está incluida en los usuarios bloqueados.

 videoList.filter(v => !blockedUsers.includes(v.user.id))
about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede filtrar la lista mediante el método Array.prototype.includes() .

 const blockedUsers = ['u1', 'u2', 'u3'], videoList = [ { id: 1, mp4URL: '...mp4', user: { id: 'u1', name: 'User 1' } }, { id: 2, mp4URL: '...mp4', user: { id: 'u2', name: 'User 1' } }, { id: 3, mp4URL: '...mp4', user: { id: 'u5', name: 'User 1' } } ], allowedVideos = videoList.filter(({ user: { id } }) => !blockedUsers.includes(id)); console.log(allowedVideos);
 .as-console-wrapper { top: 0; max-height: 100% !important; }

about 4 years ago · Juan Pablo Isaza Denunciar

0

Hay dos maneras

En primer lugar, puede filtrar la lista de videoList e iterar para verificar si el usuario está en la lista bloqueada. Podríamos hacer esto con .includes para blockedUsers , pero de esta forma resultará en la complejidad de O(n*m) , dado que n es la longitud de los blockedUsers y m es la longitud de la lista de videoList

En segundo lugar, primero podría convertir los blockedUsers en una tabla hash usando Set . Esto reducirá la complejidad del tiempo de consulta para blockedUsers de O(n) a O(1) . De esta forma, la complejidad temporal total sería O(n + m) , que es mejor que la primera forma

 const blockedUsers = ["u1", "u2", "u3"] const videoList = [ { id: 1, mp4URL: "...mp4", user: { id: "u1", name: "User 1", }, }, { id: 2, mp4URL: "...mp4", user: { id: "u2", name: "User 1", }, }, { id: 3, mp4URL: "...mp4", user: { id: "u5", name: "User 1", }, }, ] const blockedUsersHashTable = new Set(blockedUsers) const res = videoList.filter( ({ user: { id } }) => !blockedUsersHashTable.has(id) ) console.log(res)

Si la complejidad del tiempo no es su preocupación, simplemente vaya con la primera forma.

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