Если ваш массив не огромен, это не будет иметь никакого значения. Однако вы действительно можете сделать это за один проход по массиву:
const split = (data) =>
data.reduce((rv, entry) =>
(rv[+!entry.active].push(+entry.active), rv)
, [[], []]);
console.log(split([{active: true}, {active: false}, {active: false}]))
Операторы +
преобразуют логические значения в числа (0 или 1). Параметр «rv» для обратного вызова .reduce()
- это «возвращаемое значение» или аккумулятор, в который обратный вызов .reduce()
формирует результат. В этом коде обратный вызов использует флаг «активный» (инвертированный) для выбора либо первого массива (индекс 0), либо второго массива (индекс 1) в «массиве массивов» аккумулятора. Затем значение, помещенное в выбранный массив, равно 0 или 1, снова полученное из «активного» значения путем преобразования его в число.