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

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

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 Denunciar

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 Denunciar

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