JavaScript - Ayuda suma atr. de obj.

 
Vista:
sin imagen de perfil

Ayuda suma atr. de obj.

Publicado por Alejandro (40 intervenciones) el 14/10/2021 19:25:26
Tengo un ejercicio en el que he creado una clase Mobile de la que tengo 4 objetos los cuales tienen distintos atributos y uno de ellos es el precio, a la vez tengo otra clase MobileLibrary en la que uno de los atributos que la componen es un array de los móviles, necesito hacer una función que sume el precio de todos los móviles y me lo devuelva, mi código es el siguiente:

1
2
3
4
5
6
7
8
9
public totalPriceCalculation():number{
        let preciosAcumulados = 0;
        for(let dispositivos of this.mobiles){
            for(let i = 0; i <= this.mobiles.length; i++){
                preciosAcumulados = dispositivos.getPrice();
            }
        }
        return preciosAcumulados;
    }

El problema es que sólo me da el valor del precio del último móvil del array, ¿qué hago mal? ¿Alguien que pueda explicarmelo con cierto detalle? Muchísimas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de 7aamin
Val: 9
Ha aumentado su posición en 6 puestos en JavaScript (en relación al último mes)
Gráfica de JavaScript

Ayuda suma atr. de obj.

Publicado por 7aamin (79 intervenciones) el 14/10/2021 23:08:45
Pues lo que esta mal es la logica.. estas haciendo un bucle y desntro de ese bucle estas modificando el valor de una variable global.. cada ciclo del bucle va a modificar la variable y obviamente, el ultimo valor que va a tomar la variable sera el del ultimo elemento del array.
Lo que debes hacer es sumarlos, tu lo estas igualando.

esto:
1
preciosAcumulados = dispositivos.getPrice();

Cambialo por:
1
preciosAcumulados += dispositivos.getPrice();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda suma atr. de obj.

Publicado por Alejandro (40 intervenciones) el 15/10/2021 18:48:48
El problema viene en que como resultado me da 8050 y es demasiado, los precios que tengo puesto son: 575, 725, 210, 100.
No se de dónde saca tanto valor

1
2
3
4
5
6
7
8
public totalPriceCalculation():number{
        let preciosAcumulados = 0;
        for(let dispositivos of this.mobiles){
            for(let i = 0; i <= this.mobiles.length; i++){
                preciosAcumulados += dispositivos.getPrice();
            }
        }
        return preciosAcumulados;

1
2
public getTotalPrice():number{
        return this.totalPrice;

1
2
3
4
5
let Nokia = new Mobile("Nokia", "3210", "Nokia", "256 MB", "negro", false, 1, 100);
let iPhone = new Mobile("iPhone", "3G", "Apple", "16 GB", "blanco", false, 1, 210);
let Samsung = new Mobile("Samsung", "Galaxy 10", "Samsung", "64 GB", "gris espacial", true, 3, 725);
let Huawei = new Mobile("Huawei", "P30", "Huawei", "128 GB", "blanco", true, 4, 575);
let misMoviles = new MobileLibrary("The Phone House", "Madrid", [Nokia, iPhone, Samsung, Huawei]);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar