Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como somar todos os valores de todos os objetos dentro do array e criar um total?

Tenho a seguinte duvida :

Como eu posso somar o valor de todos os carros no agendamento e criar um total ?

No meu caso, são pedidos.

código:

  ionViewDidLoad() {
    let object = {};
    let datas = [];
    this._storage.forEach(items => {

      object = (items);
      datas.push(object);
    });
    this.pedidos = datas;
    console.log(this.pedidos);
  }

Com isso, consigo fazer bindings para a view mas não consigo acessar um item especifico do objeto através do meu view.ts .

2 respostas

Não sei se entendi direito a sua dúvida, mas segue um exemplo abaixo, talvez possa ajudar.

let carros = [];

carros[0] = { modelo: 'Ka', preco: 5000 };
carros[1] = { modelo: 'Corsa', preco: 10000 };
carros[2] = { modelo: 'Palio', preco: 15000 };

// Aqui realiza a soma dos preços dos carros acessando a propriedade "preco" dentro do objeto
let total = carros.reduce((total, valor) => total + valor.preco, 0);

// Resultado da soma dos preços dos carros deve ser igual a 30000
console.log( total );

Caso não conheça o método reduce(), segue abaixo um link para melhor compreensão: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

obs: Caso o total seja necessário ser exibido para o usuário, ao invés de criar a variável com "let" é só criar uma variável global, por exemplo:

// Sem definir o tipo
private total: any;
// ou tipando
private total: number = null;

Enfim, espero ter ajudado!

solução!

Recebo undefined toda vez que tento chamar algo a partir da minha variável que equivale o array. Ou seja, não consigo chamar nenhuma propriedade da variável que equivale o array datas.

ionViewDidLoad() {
    let object = {};
    let datas = [];
    this._storage.forEach(items => {

      object = (items);
      datas.push(object);
    });

    //não consigo acessar nada do que está no datas
    //apenas fazer bindings
    this.pedidos = datas;
    console.log(this.pedidos);

  }