Почему работает filter для объекта, что он делает?
Видимо, потому что в исходном коде плагина реализована своя функция filter
К слову о возможности применения методов массивов на объектах. Вот этот код отлично работает:const obj = {
  '0': 'some value 0',
  '1': 'some value 1',
  '2': false,
  length: 3,
};

const filteredArr = Array.prototype.filter.call(obj, el => el);
console.log(filteredArr); // ["0 value", "1 value"]
Массив это лишь особый вид объекта с особым набором ключей и дополнительными методами в прототипе.
Но ведь this.$refs.cpt это объект а не массив.
Откуда такая информация? Как именно определён cpt вы почему-то решили не показывать, а если ref используется совместно с v-for (на том же элементе, или дочерних) - будет массив.