@wufapexef

Почему работает filter для объекта, что он делает?

Разбираюсь в жутком плагине Vue Isotope.

Там для фильтрации элементов используется вот что

filter: function (key) {
      this.$refs.cpt.filter(key)
    }


Но ведь this.$refs.cpt это объект а не массив. Не могу понять что происходит, что делает этот код?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Видимо, потому что в исходном коде плагина реализована своя функция 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"]

Массив это лишь особый вид объекта с особым набором ключей и дополнительными методами в прототипе.
Ответ написан
0xD34F
@0xD34F Куратор тега Vue.js
Но ведь this.$refs.cpt это объект а не массив.

Откуда такая информация? Как именно определён cpt вы почему-то решили не показывать, а если ref используется совместно с v-for (на том же элементе, или дочерних) - будет массив.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы