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

178
Visualizações
Filtrar valores duplicados en cadena Javascript

Cuando menciono usuarios, si menciono a un usuario más de una vez, obtengo una cadena como:

 "@[Firstname Lastname](4652) @[Firstname Lastname](4652) @[Firstname Lastname](4652)"

Traté de filtrar para que la carga útil contenga solo uno de esos valores. ( @[Firstname Lastname](4652) ) El primer problema que tuve es que el espacio es opcional, por lo que no pude dividir la matriz (creé una matriz a partir de una cadena) por espacio. Si lo divido con @, no envía la @ en la carga útil. Supongo que debería crear algún tipo de expresión regular que compare el texto entre '@' y el último ')', según la ID de uso que está entre paréntesis. Pero no pude crear uno. Otro problema es que los usuarios también pueden escribir texto, no solo mencionar a los usuarios, por lo que podría verse así:

 "bla bla @[Firstname Lastname](4652) bla bla @[Firstname Lastname](4652) bla bla"
about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Primero puede dividir toda la cadena usando split(" ")

 const string = "bla bla @[Firstname Lastname](4652) bla bla @[Firstname Lastname](4652) bla bla"; const stringArr = string.split(" "); //Split the string into array of strings let users = []; const userPattern = /@[az]*)/i; //Begins with `@` and ends with `)` stringArr.forEach((item) => { if(userPattern.test(item) { users.append(item); } }); users = unique(users);

Función para eliminar duplicados

 function unique(a) { var seen = {}; var out = []; var len = a.length; var j = 0; for(var i = 0; i < len; i++) { var item = a[i]; if(seen[item] !== 1) { seen[item] = 1; out[j++] = item; //Adding unique arrays to this array } } return out; }

Espero que esto ayude 😊

about 4 years ago · Santiago Trujillo Relatório

0

Creo que "@" es la forma más segura de dividir la cadena porque eso garantiza que solo haya una identificación de usuario presente en cada elemento. Dado que "@" siempre va seguido de "[", se puede volver a agregar usando:

 dataPart.replace("[", "@[");

Ese problema se resolvió, se convierte en un caso de realizar un seguimiento de los números de identificación a medida que los agrega a una nueva matriz o cadena de 'carga útil'.

En la implementación sugerida en mi fragmento, los datos se dividen en "@" en una matriz. Luego, la matriz se repite utilizando forEach . Cada elemento se examina para detectar la presencia de un número de identificación, que se encuentra por la presencia de "(". Se agregan nuevas identificaciones a una matriz seen que se puede verificar durante los bucles posteriores para ver si la identificación se ha visto antes. Si la identificación es único, el elemento se transfiere a la carga útil (y la identificación se agrega a seen ).

Las limitaciones son que la identificación debe ser la única parte encerrada entre corchetes "()", y si hay texto adicional en las repeticiones posteriores de una identificación determinada, se perderá (pero el texto al principio persistirá).

 let atList = "hello @[Firstname Lastname](4652) @[Firstname Lastname](4652) @[Firstname Lastname](2352) @[Firstname Lastname](4652) @[Firstname Lastname](1637)"; const parts = atList.split("@"); const payload = []; const seen = []; parts.forEach(element => { currentId = element.slice(element.indexOf("(")+1,element.indexOf(")")); if (seen.indexOf(currentId) == -1 && element.length > 0) { payload.push(element.replace("[", "@[")); seen.push(currentId); } }); payloadString = payload.join(""); console.log(payloadString);

about 4 years ago · Santiago Trujillo Relatório

0

Primero, simplemente divida la cadena en una matriz al final de cada nombre de usuario, que es el carácter ) . Elimine todos los caracteres antes del símbolo @ , luego agregue el nuevo elemento de matriz a una segunda matriz si aún no está presente.

EDITAR: código hecho ejecutable

 function getUsernames(string) { var array = [] // Second Empty Array for (var s of string.split(")")) { // For Loop through first 'split' array if (!array.includes(s.substring(s.indexOf("@"))+")") && s.includes("@")) array.push(s.substring(s.indexOf("@"))+")") // If the second array doesn't have the split element, add it } return(array) } console.log(getUsernames("@[Firstname Lastname](4652) @[Firstname Lastname](4652) @[Firstname Lastname](4652)")) // Print out your refined array of usernames console.log(getUsernames("@[Firstname Lastname](0001) abcd @[Firstname Lastname](0002) 1234 @[Firstname Lastname](0003) <?/[}")) // Print out your refined array of usernames

about 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