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

366
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 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