Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

127
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!