Resolução de um Array de objeto em JS

Preciso fazer uma função que manipule um array com os objetos do tipo acima e atualize o saldo total individual de cada um, sem criar um novo array. Retorne o array original.

Daí comecei ele assim:

const contas = [

  { cliente: "Janice", saldoTotal: 1000, compras: [100, 200, 300] },

  { cliente: "Pedro", saldoTotal: 7500, compras: [200, 1040] },

  { cliente: "Joca", saldoTotal: 10000, compras: [5140, 6100, 100, 2000] },

  { cliente: "Laura", saldoTotal: 100, compras: [100, 200, 1700] },

  { cliente: "Isabel", saldoTotal: 1800, compras: [200, 300] },

  { cliente: "Maria", saldoTotal: 1200, compras: [] }

]

function calculaSaldo(contas) {

  contas.map((contas) => {

    let comprasTotal = 0;

    for (let i = 0; i < contas.compras.length; i++) {

      comprasTotal += contas.compras[i]

    }

    contas.saldoTotal -= comprasTotal

  })

}

Bom, segundo a documentação, map sempre retorna um novo array, então se não quer criar outro, não use :slight_smile:

O jeito é usar o bom e velho for “tradicional”:

function calculaSaldo(contas) {
    for (let i = 0; i < contas.length; i++) {
        let comprasTotal = 0;
        for (let j = 0; j < contas[i].compras.length; j++) {
            comprasTotal += contas[i].compras[j];
        }
        contas[i].saldoTotal -= comprasTotal;
    }
}

// a função modifica o array
calculaSaldo(contas);
// mostra o array atualizado
console.log(contas);

Eu até poderia colocar return contas; no final da função, mas como ela modifica o array, eu acho meio desnecessário, afinal, ao chamar a função, o array já é modificado, fazendo com que o retorno seja redundante.