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

211
Visualizações
Al unir dos matrices, postfije valores no únicos con (número) de forma incremental de unir la matriz

Tengo dos matrices:

  • Matriz 1: [{name: "Darin", id: "123"}, {name: "Mads", id: "345"}, {name: "Kenneth", id: "543"}, {name: "June", id: "567"}, {name: "June (1)", id: "789"}]
  • Matriz 2: [{name: "Darin", id: "910"}, {name: "June", id: "911"}, {name: "Simon", id: "912"}, {name: "Justin", id: "913"}]

La salida que quiero es la siguiente:

 [{name: "Darin", id: "123"}, {name: "Mads", id: "345"}, {name: "Kenneth", id: "543"}, {name: "June", id: "567"}, {name: "June (1)", id: "789"}, {name: "Darin (1)", id: "910"}, {name: "June (2)", id: "911"}, {name: "Simon", id: "912"}, {name: "Justin", id: "913"}]

Como puedes ver, tengo las siguientes reglas:

  • La matriz 2 debe ser la única matriz en la que posfijo (... num)
  • Los duplicados eventuales deben tener un postfijo con (número) donde el número aumenta hasta que el valor se vuelve único en la matriz unida

No estoy seguro de por dónde empezar para lograr lo anterior. Puedo ver esto resuelto con un montón de bucles y una función recursiva, pero en realidad, eso es ineficiente.

Puedo ver que Javascript ES6 ofrece algunos métodos "más nuevos" que podrían resultar útiles en este escenario, en particular map and set .

En consecuencia, mi pregunta busca comprender cómo puedo lograr lo anterior, prestando atención a la complejidad del tiempo.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Podrías contar los nombres separando las cadenas.

 const array1 = ["Darin", "Mads", "Kenneth", "June", "June (1)"], array2 = ["Darin", "June", "Simon", "Justin"], counts = {}, result = [array1, array2].reduce((r, a) => { a.forEach(v => { const [, name, , count = 0] = v.match(/^(\w*)(\s\((\d+)\))?$/); if (name in counts && count === 0) ++counts[name]; else counts[name] = count; r.push(counts[name] ? `${name} (${counts[name]})` : name); }); return r; }, []); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Relatório

0

Usando Array.map y un objeto de contador para realizar un seguimiento de la cantidad de veces que ya se produjo cada nombre:

 var input1 = [{name: "Darin", id: "123"}, {name: "Mads", id: "345"}, {name: "Kenneth", id: "543"}, {name: "June", id: "567"}, {name: "June (1)", id: "789"}]; var input2 = [{name: "Darin", id: "910"}, {name: "June", id: "911"}, {name: "Simon", id: "912"}, {name: "Justin", id: "913"}]; var counter = {}; var combined = input1.concat(input2).map(function(e) { var strippedName = e.name.replace(/ \([0-9]+\)/, ''); counter[strippedName] = counter[strippedName] == undefined ? 0 : counter[strippedName] + 1; e.name = strippedName + (counter[strippedName] ? ' ('+counter[strippedName]+')' : ''); return e; }); console.log(combined);

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