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

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

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 Denunciar

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