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

198
Views
¿Cómo eliminar copias duplicadas en el contador de elementos de mapeo?

Estoy tratando de crear un pequeño proyecto donde pueda contar la cantidad de elementos en una matriz. Esta parte ya la he hecho. Mi pregunta es ¿cómo puedo solucionar un problema de conteo? Estoy usando un método de mapeo para obtener el contador de ocurrencias de mi elemento, pero quiero poner los datos en una matriz. La única forma que conozco es tomar los datos del mapeo con .get. La forma en que lo estoy haciendo es usando esta primera parte aquí:

 let winners = [1, 2, 3, 2]; let nullArray = []; let mode = new Map([...new Set(winners)].map( k => [k, winners.filter(t => t === k).length] )); for (let n in winners) { nullArray.push(mode.get(winners[n])); console.log(nullArray); }

Sin embargo, esto *n impulsará las coincidencias. Por ejemplo, si tiene l=[1,2,2], porque l[1]=2 y l[2]=2, se insertarán en nullArray como 2, sin embargo, también se insertará l[2 ] y l[1] ya que los valores son diferentes. Si tiene tres coincidencias, se duplicaría 3 veces, y así sucesivamente. Para contrarrestar esto, intenté crear un detector que calculara cuándo los mismos números en nullArray son de la misma copia pero en un orden diferente. Para hacer esto, usé el código que tengo a continuación (combinado con el código original)

 let winners = [1, 2, 3, 2]; let nullArray = []; let mode = new Map([...new Set(winners)].map( k => [k, winners.filter(t => t === k).length] )); for (let n in winners) { nullArray.push(mode.get(winners[n])); console.log(nullArray); } for (let num in nullArray) { for (let c in nullArray) { if (nullArray[num] === nullArray[c] && winners[num] === winners[c]) { nullArray.splice(num, 1); } console.log(nullArray); } }

Sin embargo, cada vez que intento esto, el resultado específico de esta matriz es [2,2]. ¿Cómo podría hacer una solución general que elimine todas las copias duplicadas, dejando solo una copia del recuento de números (que en el caso de [1,2,3,2], querría nullArray=[1,2,1 ] como salida)

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puedes hacer algo como esto.

Si no te importa el orden, puedes hacer lo siguiente.

 const remove_dup_and_count = (winners = [1, 2, 3, 2]) =>{ let map = {} //count elements for (let n in winners) { const curr_val = winners[n] //duplicate, so we increment count if(curr_val in map) map[curr_val] += 1 //first seen, so we start at 1 else map[curr_val] = 1 } //lets grab the array of all keys in map const keys_arr = Object.keys(map) let count_arr = [] for(let i of keys_arr){ count_arr.push(map[i]) } return count_arr } console.log(remove_dup_and_count())

Si te importa el orden, esta es tu mejor apuesta:

 const remove_dup_and_count = (winners = [1, 2, 3, 2]) =>{ let map = new Map() //count elements for (let n in winners) { const curr_val = winners[n] //duplicate, so we increment count if(map.get(curr_val)) map.set(curr_val, map.get(curr_val) + 1) //first seen, so we start at 1 else map.set(curr_val,1) } let count_arr = [] //lets grab the array of all keys in map for (const [key, value] of map) { count_arr.push(value) } return count_arr } console.log(remove_dup_and_count())

about 4 years ago · Juan Pablo Isaza Report

0

Creo que puede usar el método .reduce() y luego recuperar cuántas veces se repite el valor en la matriz usando map.values(); algo como el siguiente fragmento:

 const winners = [1, 2, 3, 2]; const mapWinners = winners.reduce((winnersAccumulator, singleWinner) => winnersAccumulator.set(singleWinner, (winnersAccumulator.get(singleWinner) || 0) + 1), new Map()) console.log([...mapWinners.values()])
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!