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

136
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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