Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

360
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda