Как сформировать объект в виде ассоциативного массива?
Если считать «маркером» начала данных нового объекта поле filter-name,
можно вставлять новый пустой объект по такому сигналу
и заполнять поля всегда в последний элемент массива:
arr.reduce((acc, cur) => {
  if (cur.name === 'filter-name') acc.push({});
  acc[acc.length - 1][cur.name] = cur.value;
  return acc;
}, []);

snippet
Да. В каждой форме по 3 элементаconst arr = $('.filter').serializeArray();
const result = [];
for(let i = 0; i < arr.length; i += 3) {
  result.push(arr.slice(i, i + 3).reduce((acc, {name, value}) => ({...acc, [name]: value}), {}));
}