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

101
Vistas
Actualice una matriz solo usando métodos de clase cuando la matriz es propiedad privada en clase

Estoy escribiendo una clase donde tengo algunos datos (podría ser hasta 100K) en forma de matriz. Los datos deben agregarse de manera LIFO.

 class AddProximityValues { #values = []; getValues () { return this.#values; } setValues(...elements) { this.#values.push(...elements); } //tried this way not sure // if this is the right way of doing this getValueEff() { return [...this.#values] } } const addProximityValues = new AddProximityValues(); console.log(addProximityValues.setValues(...[10, 20, 40])); console.log(addProximityValues.getValues().push(50)); // don't want push to work console.log(addProximityValues.getValues()); console.log('*********************************'); console.log(addProximityValues.getValueEff().push(50)); // don't want push to work console.log(addProximityValues.getValues());

Desde el código cuando devuelvo la matriz, devuelve la referencia y puede escribirle valores sin llamar a la función de clase. Quiero que solo el método de clase pueda actualizar los valores.

Una forma de hacer esto es devolver una nueva matriz a partir de los valores existentes, pero se necesitará más memoria si la matriz es demasiado grande. ¿Hay alguna manera de lograrlo de una manera más eficiente?

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

0

Una opción es que getValues no devuelva una matriz. Podría devolver un iterador de matriz (o incluso podría hacer que su clase sea iterable agregando una función [Symbol.iterator] ). Un iterador proporciona acceso secuencial a los valores de la matriz sin permitir la modificación de la matriz. También podría proporcionar un método para obtener un valor para un índice dado, y tal vez incluso una propiedad de length :

 class AddProximityValues { #values = []; [Symbol.iterator]() { // Return an iterator for the values return this.#values[Symbol.iterator](); } get(index) { return this.#values[index]; } get length() { return this.#values.length; } setValues(...elements) { this.#values.push(...elements); } } const addProximityValues = new AddProximityValues(); addProximityValues.setValues(...[10, 20, 40]); // This would fail, no `push` on an iterator // console.log(addProximityValues.getValues().push(50)); // don't want push to work // The code using it can loop through for (const value of addProximityValues) { console.log(value); } console.log(`Value at index 2: ${addProximityValues.get(2)}`); console.log(`There are ${addProximityValues.length} values`); // The code can still get all the values as an array if it really needs to console.log([...addProximityValues]);

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