Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

177
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!