Eu tenho um array de objetos, esses objetos são como jobs a serem feitos e cada job tem um tempo estimado para ser finalizado. Eu preciso agrupar esses objetos em outro array, com grupos de projetos que levam até 8 horas para serem feitos.
Exemplo:
const arr = [
{
id: 1,
hrs: 2,
},
{
id: 2,
hrs: 4,
},
{
id: 3,
hrs: 6
}
]
O output disso é:
[[1,3],[2]]
O agrupamento é feito pelo ID. Nesse caso, foi agrupado o id 1 com o 3, porque a soma das horas do objeto do ID 1 com o ID 3 dá 8, mais próximo de 8 do que a soma do ID 1 com o ID 2. O ID 2 ficou em um outro grupo, já que somando os 3 passaria de 8 horas.
Não se ficou bem claro, mas a minha dificuldade aqui é somar todos os índices, verificar a soma que mais se aproxime de 8 e agrupá-la, e depois agrupar os demais.