Самый быстрый способ отфильтровать возвращаемый массив jQuery

0

Я ищу метод для фильтрации возвращаемого массива выбора jQuery.

Скажем, у меня есть массив элементов, который возвращается jQuery:

window.elementSet = $("element");

Теперь я хотел бы отфильтровать этот массив, чтобы отображать только элементы с классом "автомобиль", не переделывая селектор, поэтому

window.elementSetOfCars = $("element.car");

Поскольку возвращаемое значение представляет собой массив элементов, мы могли бы просто использовать.filter или.grep или простой цикл while/while, где мы проверяем каждый класс элемента с помощью.hasClass() или attr ("class") или без разницы.

Какой самый быстрый способ для этого?

  • 0
    Почему бы не сделать это самостоятельно? Используйте jsperf, чтобы проверить это :-)
  • 1
    Спасибо, я должен признать, я не знал этот сайт :) - Тем не менее, я думаю, что другие могут столкнуться с этим вопросом, и найти ответ полезным также во время кодирования.
Показать ещё 3 комментария
Теги:
arrays
loops
selector

1 ответ

2

Вы можете сделать следующее:

var elementSetOf = window.elementSet.filter(function(val,i,arr){
return (val.className.indexOf('car') >= 0);
});

Однако имейте в виду, что результат $ (селектора) на самом деле не является массивом, а скорее "массивным" объектом, что означает, что многие методы и свойства Array будут работать, но не все из них. Больше информации здесь

  • 1
    Да, это определенно сработает, но Стивен спросил о самом быстром способе фильтрации его данных. Таким образом, нативный JS будет быстрее, чем filter jQuery. Но, как уже отмечалось, за исключением очень особых случаев, когда вам нужно выполнить эту операцию миллион раз, вы не заметите разницы, работают ли другие функции одновременно или нет. РЕДАКТИРОВАТЬ: Кто-то предложил использовать jQuery.filter но удалил свой комментарий. Не имеет особого смысла сейчас: /
  • 0
    Точно, Уолдо. Тем не менее, window.elementSet.filter (". Cars") будет наиболее удобным для разработчиков решением, но далеко не самым быстрым.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню