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

136
Vistas
implementar una lista con un método estático javascript

Debo reimplementar una lista y el método forEach con las siguientes instrucciones:

// No construya ningún literal de matriz ([]) en su solución.

// No construya matrices a través de new Array en su solución.

// NO use ninguno de los métodos Array.prototype en su solución.

// Puede usar la sintaxis de desestructuración y propagación (...) de Iterable.

el resultado debe verse como:

 const list = List.create(1, 2) list.forEach((item) => console.log(item))

Aquí está mi solución incompleta:

 export class List { constuctor(){ } public static create(...values: number[]): List { // Do *not* construct any array literal ([]) in your solution. // Do *not* construct any arrays through new Array in your solution. // DO *not* use any of the Array.prototype methods in your solution. // You may use the destructuring and spreading (...) syntax from Iterable. List list = new List(); values.forEach(function(item){ list.push(item); }); return list; } public forEach(callback: any){ for (let i = 0; i<this.length ; i++){ callback(this[i], i, this); } } }

en el bucle de creación, pero el problema, como método estático, no se reconoce

EDITADO gracias a los comentarios

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

... this no se reconoce

Está. Pero no le has dado a this ninguna propiedad. Y esto es porque:

  • constuctor debe escribirse como constructor
  • Debe definir un método push (ya que lo llama en create )
  • Debe definir una propiedad de length (ya que la hace referencia en forEach )

Además, hay algunos otros problemas:

  • escribe que las funciones Array.prototype no se pueden usar, pero su código tiene values.forEach() , ... por lo que es una violación de esa regla. Utilice un bucle for..of en su lugar.

Aquí está su código con esos comentarios tomados a bordo:

 class List { constructor() { this.length = 0; } push(value) { this[this.length++] = value; } static create(...values) { let list = new List(); for (let item of values) { list.push(item); } return list; } forEach(callback) { for (let i = 0; i < this.length ; i++) { callback(this[i], i, this); } } } const list = List.create(1, 2) list.forEach((item) => console.log(item))

Observaciones

La "prueba" anterior estará bien, pero cuando también las asignaciones a las propiedades funcionen correctamente, como list[2] = 3 , entonces hay más cosas de las que ocuparse. Tomemos por ejemplo este programa:

 const list = List.create(1, 2); list[5] = 42; // should update length list.check = true; // should not update length console.log("length = " + list.length); console.log("enumerable keys are " + Object.keys(list)); list.forEach((item) => console.log(item)); // should not output empty slots list.length = 1; // should delete some index properties list.forEach((item) => console.log(item)); // should not output deleted items

... entonces la salida debería ser:

 length = 6 enumerable keys are 0,1,5,check 1 2 42 1

Puede hacer que esto suceda interceptando el acceso a las propiedades y haciendo que length sea un getter/setter. Pero también necesitaría distinguir entre las propiedades que son índices de matriz y las que no lo son, por lo que, en general, eso haría que el código fuera menos trivial.

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