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

359
Visualizações
Arreglos asociativos en Node JS para una lista de suscriptores

Necesito crear, en Node JS, una lista de "suscriptores" que proporcionarán un dispositivo (cadena) para el cual desean recibir notificaciones cuando haya nuevos datos, y la IP y el Puerto (ambas cadenas) para reenviar los datos . La lista debe ser única ; es decir, solo debe haber una combinación de (dispositivo, IP, Puerto) en la lista. También necesito obtener de manera eficiente una sublista de IP/Puerto de suscriptores cuando los datos provienen de un dispositivo, para saber a dónde reenviar los datos.

En otros idiomas, estaba usando matrices asociativas para esto (con índice único), así que usando algo como esto;

 subscribers[device] = (IP,Port)

resuelve el problema. Entonces, cuando nuevos datos provienen de un dispositivo , al filtrar la matriz con el índice del dispositivo, obtengo una lista de suscriptores a los que reenviar los datos.

Me pregunto cuál es el mejor enfoque para implementar esto en Node JS. Estaba mirando matrices, pero no encuentro matrices asociativas, y no estoy seguro de si otra forma sería un mejor enfoque...

Gracias de antemano Gus

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Una solución simple que funciona para su caso de uso es usar un Mapa de conjuntos de cadenas, donde concatena la dirección IP y el puerto:

 const subscribers = new Map<string, Set<string>>(); function addSubscriber(device: string, ip: string, port: number) { let set = subscribers.get(device); if (!set) { set = new Set<string>(); subscribers.set(device, set); } // Lowercase in case your IP is an IPv6 and can have random upper/lower case set.add(`${ip.toLowerCase()}:${port}`); } const splitCombo = (combo: string): [string, number] => { const split = combo.split(':'); return [split[0], parseInt(split[1])]; }; function getSubscribers(device: string): [ip: string, port: number][] { const set = subscribers.get(device); if (!set) return []; return Array.from(set).map(splitCombo); }

escrito en TypeScript para mostrarle los tipos

De lo contrario, deberá crear su propia variante de un mapa/lista asociado. Todavía es posible y tal vez muy divertido, pero también mucho más complejo que esta variante simple. Por ejemplo, reemplace Set<string> con una matriz [string, number][] , pero luego tendría que verificar manualmente al agregar un nuevo par si ese par ya está presente. Usando un Set<string> , .add se encargará de esto de manera bastante eficiente.

over 4 years ago · Santiago Trujillo 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