El Contador de Menciones en Chat
Dificultad: Medio TypeScript intermediate coding
interface Mensaje {
texto: string;
usuario: string;
}
const mensajes: Mensaje[] = [
{ texto: '@Ana hola @Luis', usuario: 'Carlos' },
{ texto: '@Ana @Ana gracias', usuario: 'Luis' },
{ texto: 'sin menciones', usuario: 'Pedro' }
];
const contarMenciones = (msgs: Mensaje[]): Record<string, number> => {
const menciones: Record<string, number> = {};
msgs.forEach(m => {
const matches = m.texto.match(/@\w+/g) || [];
matches.forEach(mencion => {
const nombre = mencion.slice(1);
menciones[nombre] = (menciones[nombre] || 0) + 1;
});
});
return menciones;
};
console.log(contarMenciones(mensajes)); 📥 Inputs:
mensajes = [{ texto: '@Ana hola @Luis', usuario: 'Carlos' }, { texto: '@Ana @Ana gracias', usuario: 'Luis' }, { texto: 'sin menciones', usuario: 'Pedro' }]
❓ ¿Cuál es el output?
Ingresa tu respuesta abajo
💡 Explicación
La función extrae menciones con regex /@\w+/g, elimina el @ con slice(1) y cuenta cada aparición. Ana aparece 3 veces (1 en el primer mensaje, 2 en el segundo) y Luis 1 vez. El operador || 0 inicializa el contador para nuevas menciones.
¿Cuántas menciones tiene cada usuario? 💬