Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Javascript] Como dividir um array de números em 2, de forma que a soma dos elementos de cada um não ultrapasse 25?

Tenho em meuArray 10 números aleatórios que somados dão no máximo 50. Eu gostaria de dividir esse array em 2, e que em cada um, a soma dos elementos fosse de no máximo 25.

let meuArray = [7, 5, 4, 8, 2, 4, 6, 3, 2, 5]; // soma = 46

// grupo1 e grupo2 são exemplos de possíveis respostas que eu procuro alcançar nesse caso.

let grupo1 = [7, 5, 4, 6, 2] // soma = 24

let grupo2 = [4, 8, 3, 2, 5] // soma = 22
1 resposta
solução!

Consegui! O código ainda precisa ser polido e otimizado. Porém acredito que esteja compreensível para quem tiver a mesma dúvida.

const meuArray = [7, 5, 4, 8, 2, 4, 6, 3, 2, 5];
let soma = [];

function separarArray() {
  do{
    soma = [];
    let time1 = [];
    let time2 = [];


    let arrayMudado = meuArray
    .map((a) => ({sort: Math.random(), value: a}))
    .sort((a, b) => a.sort - b.sort)
    .map((a) => a.value);

    time1 = arrayMudado.slice(0, 5);
    time2 = arrayMudado.slice(5, 10);

    let somatorio = time1.reduce((resultado, quantidade) => {
      return (resultado + quantidade);
    }, 0);

    soma.push(somatorio);
    console.log(somatorio);
    console.log('essa é a soma do time1 = ' + soma);
    console.log('esse é o time1 = '+ time1);

  }while(soma > 25); 
};

separarArray();