Распределение синтаксиса работает как Object.assign()
. У каждого из трех ваших объектов есть свойство, называемое «ребра». Когда вы «объединяете» их, значение «ребер» в каждом объекте копируется в цель, но это мелкая копия. Среда выполнения не предпринимает никаких попыток выполнить более глубокое объединение значений массива, поэтому вы просто получите последний скопированный массив.
Если вы хотите объединить (или объединить, или что-то еще) массивы, вам придется сделать это с явным фрагментом кода.