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

186
Vistas
¿Cómo sobrescribir el iterador o los valores de Javascript/Typescript Set?

Necesito hacer un conjunto de matrices. El conjunto predeterminado de Javascript no funciona con matrices, por lo que agregué esta nueva clase de Typescript:

 export class ArraySet extends Set<any> {
 override add(arr: any): any {
 super.add(arr.toString());
 }
 override has(arr): boolean {
 return super.has(arr.toString());
 }
}

¿Hay alguna forma de editar esta clase para obtener valores como matriz?

Corrientemente:

 const set = new ArraySet()
set.add([1,1])
set.add([2,1])
set.forEach(e => console.log(typeof(e)))
# string 
# string

Esperado:

 const set = new ArraySet()
set.add([1,1])
set.add([2,1])
set.forEach(e => console.log(typeof(e)))
# object # because I want the element to be the array 
# object
almost 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

combinando algunas de las sugerencias que tal vez podría salirse con la suya sin necesidad de anular la parte del iterador y simplemente controlar lo que sucede dentro del conjunto de esa manera

 class ArrayNumberSet extends Set<number[]> {
 private readonly keyMap: Map<string, number[]> = new Map();

 private key(value: number[]): string {
 return JSON.stringify(value);// or value.toString()
 }

 override add(value: number[]): this {
 const key = this.key(value);
 const old = this.keyMap.get(key);
 if (old) {
 this.delete(old);
 }
 this.keyMap.set(key, value);
 super.add(value);
 return this;
 }

 override clear(): void {
 this.keyMap.clear();
 super.clear();
 }

 override delete(value: number[]): boolean {
 const key = this.key(value);
 const old = this.keyMap.get(key);
 if (old) {
 this.keyMap.delete(key);
 return super.delete(old);
 }
 return false
 }

 override has(value: number[]): boolean {
 return this.keyMap.has(this.key(value))
 }
}

esto trataría [1, 2] , [2, 1] , [2, 1, 1] como objetos diferentes. Si no quiere eso, considere un conjunto de conjuntos tal vez o cree una clave a partir de matrices ordenadas

almost 4 years ago · Santiago Trujillo 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