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

167
Views
incrementando un conjunto si existe

Tengo una cadena "abacabad" que se pasa a mi función como s

Lo que quiero hacer:

  • crear un nuevo conjunto
  • pasar por cada letra de la cadena. si la letra existe la incremento en 1
  • si no existe, creamos el conjunto inicializándolo como 1

Lo que mi código está registrando:

Conjunto (0) { a: 1, b: 1, c: 1, d: 1 }

lo que debería estar registrando:

Conjunto (0) { a: 4, b: 2, c: 1, d: 1 }


 function solution(s) { arr = new Set() for (e of s) { if (e in arr) { arr[e]++; } if (arr.has(e) == false) { arr[e] = 1; } } console.log(arr) } solution('abacabad');

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

0

Un Set es una colección de elementos únicos. No es una tienda de Map (clave/valor).

Hay toneladas de problemas en ese código, así que no los enumeraré todos, pero simplemente no está usando el tipo correcto de objeto y luego está mezclando API, en particular definiendo claves de objetos mezclados con la API del Set real.

 function solution(s) { const countByChar = new Map(); for (char of s) { const count = countByChar.get(char) || 0; countByChar.set(char, count + 1); } return countByChar; } const countByChar = solution('abacabad'); console.log(Array.from(countByChar.entries()));

about 4 years ago · Juan Pablo Isaza Report

0

Estás combinando dos estructuras de datos diferentes:

  • Conjuntos, que son colecciones de valores solamente (por ejemplo ('a, 'b', 'c', 'd') , y
  • Objetos, que son colecciones de pares clave-valor (por ejemplo { a: 1, b: 2 } )

Los métodos de configuración incluyen .has y .add . Pero los conjuntos también son objetos, por lo que también puede usar la asignación de propiedades de objetos estándar en ellos, pero no debería hacerlo . Si desea un conjunto, use métodos de conjunto (y solo métodos de conjunto) para recopilar datos sobre él. Aquí, está colocando una propiedad directamente en el objeto Set (con arr[e] = ), pero está usando el método Set .has , que verifica algo completamente diferente. .add has analiza los valores en la estructura de datos interna del Conjunto (no visible por ningún otro mecanismo que no sean otros métodos del Conjunto), y nunca usa .add , por lo que su Conjunto nunca recibe ningún valor.

Un conjunto no funcionará bien aquí de todos modos, porque desea una colección de pares clave-valor, no solo una colección de valores. En su lugar, utilice un objeto estándar o un mapa.

 function solution(s) { const obj = {}; for (const char of s) { obj[char] ??= 0; obj[char]++; } console.log(obj); } solution('abacabad');

Si quisieras un mapa:

 function solution(s) { const map = new Map(); for (const char of s) { map.set( char, (map.get(char) || 0) + 1 ); } console.log([...map.entries()]); } solution('abacabad');

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!