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

359
Views
JS: ¿cómo puedo comparar dos elementos en una matriz con una cadena casi similar?

Ejemplo 1: tengo una matriz como esta

 let arrayA = ["task A - memberA", "task A - memberB", "task B - memberA"]

Quiero saber si dos miembros están haciendo la misma tarea, luego elimino la tarea de la siguiente. El resultado esperado del Ejemplo 1 debería ser:

 arrayA = ["task A - memberA", "task B - memberA"]

Ejemplo 2:

 let arrayA = [{task: "Task A", member: "MemberA"},{task: "Task A", member: "MemberB"},{task: "Task B", member: "MemberB"}]

Resultado esperado 2:

 arrayA = [{task: "Task A", member: "MemberA"},{task: "Task B", member: "MemberB"}]

Gracias,

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Cree un Set que realice un seguimiento de las tareas activas.

Luego, recorra la matriz de tasks y extraiga la task dividiendo la cadena y luego, si la task no está presente en el Set , empújela a la matriz resultante.

 let tasks = ["task A - memberA", "task A - memberB", "task B - memberA"]; function getUniqueTasks(tasks) { const activeTasks = new Set(); const uniqueTasks = []; tasks.forEach((t) => { const [task] = t.split(" - "); if (!activeTasks.has(task)) { uniqueTasks.push(t); activeTasks.add(task); } }); return uniqueTasks; } console.log(getUniqueTasks(tasks));

Si está buscando un trazador de líneas elegante, consulte la solución a continuación:

 const data = ["task A - memberA", "task A - memberB", "task B - memberA"], filterer = (s) => (d, _i, _a, t = d.split(" - ")[0]) => !s.has(t) && s.add(t), result = data.filter(filterer(new Set())); console.log(result);

Documentaciones relevantes:

  • Conjunto - JavaScript
  • Array.prototype.forEach
  • matriz.prototipo.filtro
  • String.prototype.split
about 4 years ago · Juan Pablo Isaza Report

0

usando el método de reducción,

  • obtener la subcadena antes de '-', es decir, el nombre de la tarea
  • compruebe si el nombre de la tarea existe en pv o no
  • si la matriz pv (previousValue) de la función de reducción no contiene la tarea, agregue esa nueva tarea en ella.

pista :
algún método devuelve verdadero o falso
incluye el método devuelve verdadero o falso
El método substr devuelve la subcadena de la cadena, es decir, el nombre de la tarea.
consulte los tutoriales de MDN para obtener más detalles

 let arr = ["task A - memberA", "task A - memberB", "task B - memberA"] let result = arr.reduce((pv,cv) => { if(!pv.some(e => e.includes(cv.substr(0, cv.indexOf('-')).trim()))) pv.push(cv) return pv },[]) console.log(result)

para el segundo ejemplo simplemente reemplace
if(!pv.some(e => e.task.includes(cv.task.trim()))) pv.push(cv)

about 4 years ago · Juan Pablo Isaza Report

0

Podría tomar un Set y una función para la parte única deseada de la cadena.

 const getTask = s => s.split(' - ', 1)[0], uniqueBy = fn => s => v => (w => !s.has(w) && s.add(w))(fn(v)), data = ["task A - memberA", "task A - memberB", "task B - memberA"], result = data.filter(uniqueBy(getTask)(new Set)); console.log(result);

about 4 years ago · Juan Pablo Isaza 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!