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

124
Visualizações
Cuente los duplicados en una matriz 2D y cree una nueva matriz 2D y amplíela con los conteos

Tengo un 2d de esta matriz con pocos valores. Quiero contar los duplicados en esta matriz y obtener una nueva matriz 2d con los valores y, al final, la cantidad de conteos.

 let colors = [ ['blue', 'green', 5.00, 57], ['blue', 'green', 5.00, 57], ['yellow', 'green', 8.30, 84], ['blue', 'green', 5.00, 57], ['orange', 'blue', 7.00, 0], ['yellow', 'green', 8.30, 84], ]; function count_duplicate() { let counts = [] for (let i = 0; i < colors.length; i++) { if (counts[colors[i]]) { counts[colors[i]] += 1 } else { counts[colors[i]] = 1 } } console.log(counts); } count_duplicate();

ahora tengo este resultado

 counts = [blue,green,5,57: 3, yellow,green,8.3,84: 2, orange,blue,7,0: 1]

pero necesito la matriz como esta

 counts = [[blue,green,5,57,3], [yellow,green,8.3,84,2], [orange,blue,7,0,1]]
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

Puede usar Map aquí para lograr el resultado:

 let colors = [ ["blue", "green", 5.0, 57], ["blue", "green", 5.0, 57], ["yellow", "green", 8.3, 84], ["blue", "green", 5.0, 57], ["orange", "blue", 7.0, 0], ["yellow", "green", 8.3, 84], ]; function count_duplicate() { let counts = new Map(); for (let i = 0; i < colors.length; i++) { const data = counts.get(colors[i].toString()); if (data) data.count++; else counts.set(colors[i].toString(), { value: colors[i], count: 1 }); } const result = []; for (let [, { value, count }] of counts) { result.push([...value, count]); } return result; } console.log(count_duplicate());

about 4 years ago · Juan Pablo Isaza Relatório

0

cambie de array [] a an object {} , para manipular fácilmente cada sub-array(row) cuántas veces ocurre, ¡debe ser un objeto, no una matriz! y Usando Object.entries recorriendo su key(str) and value(times) , y devuelve str dividido por coma y sus tiempos de ocurrencia .

 let colors = [ ["blue", "green", 5.0, 57], ["blue", "green", 5.0, 57], ["yellow", "green", 8.3, 84], ["blue", "green", 5.0, 57], ["orange", "blue", 7.0, 0], ["yellow", "green", 8.3, 84], ]; function count_duplicate() { let counts = {};//<-- for (let i = 0; i < colors.length; i++) { if (counts[colors[i]]) { counts[colors[i]] += 1; } else { counts[colors[i]] = 1; } } console.log(counts); //{ 'blue,green,5,57': 3, 'yellow,green,8.3,84': 2, 'orange,blue,7,0': 1 } const res = Object.entries(counts).map((count) => { [str, times] = count; //['blue,green,5,57': 3] return [...str.split(","), times];//[ 'blue', 'green', '5', '57', 3 ] }); console.log(res); } count_duplicate();

Resultado:

 [ [ 'blue', 'green', '5', '57', 3 ], [ 'yellow', 'green', '8.3', '84', 2 ], [ 'orange', 'blue', '7', '0', 1 ] ]
about 4 years ago · Juan Pablo Isaza Relatório

0

No sé acerca de la sintaxis elegante, pero usar un hashmap debería funcionar, que es solo un objeto de JavaScript.

 let colors = [ ['blue', 'green', 5.00, 57], ['blue', 'green', 5.00, 57], ['yellow', 'green', 8.30, 84], ['blue', 'green', 5.00, 57], ['orange', 'blue', 7.00, 0], ['yellow', 'green', 8.30, 84], ]; const hashmap = {}; colors.forEach(color => { const key = JSON.stringify(color); if(!hashmap[key]) hashmap[key] = 1; else hashmap[key]++; if(hashmap[key] == 1) return color; }); console.log(hashmap); const uniqueArray = []; for(const key in hashmap) uniqueArray.push(JSON.parse(key)); console.log(uniqueArray);

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