const array = [{idx: 1, count: 100}, {idx: 2, count: 200}, {idx: 3, count: 200}, {idx: 4, count: 100}]
// Ожидаемый результат: массив массивов
// [[{idx: 1, count: 100}, {idx: 2, count: 200}, {idx: 3, count: 200}], [{idx: 4, count: 100}]]
const groupBySum = (arr, key, max) => arr
.reduce((acc, n, i) => (
(!i || acc[acc.length - 1][1] + n[key] > max) && acc.push([ [], 0 ]),
acc[acc.length - 1][0].push(n),
acc[acc.length - 1][1] += n[key],
acc
), [])
.map(n => n[0]);
const result = groupBySum(arr, 'count', 500);