Как преобразовать результат функции jQuery.find() в массив?

Что возвращает метод jQuery .find()? объект ИЛИ список массивов объектов?

Если он возвращает объект, который содержит все совпадающие элементы. Как преобразовать этот объект в массив?

Если он возвращает массив элементов, почему $(xml).find("DATE").sort(mySortFunc); не работает, кажется, что jQuery .find() возвращает объект, который не может применить метод Javascript sort(), который должен применяться к массиву.

Как правило, мне нужно отсортировать объекты, найденные с помощью $(xml).find("DATE"), но когда я использую функцию сортировки, возникает ошибка, что объект не может быть разрешен.

Ответы

Ответ 1

Большинство методов jQuery возвращает объект jQuery, к которому можно получить доступ, подобно массиву (например, он имеет атрибут .length, к элементам можно получить доступ с использованием знака с квадратной скобкой ([0])), и он поддерживает некоторые методы массива (slice())).

jQuery имеет метод toArray(), который может быть использован для преобразования объекта jQuery в реальный массив.

Вы также можете использовать get() без аргументов для достижения такого же эффекта (и сэкономить несколько нажатий клавиш).

В будущем вы можете проверить jQuery API, а тип возврата для всех методов jQuery указан в соответствующей документации (например, для find(), тип возврата - "jQuery" )

Ответ 2

Если вы вызовете .get() для объекта jQuery без параметра, он вернет обычный массив элементов DOM.

Ответ 3

jQuery уже действует как массив, и поэтому вы можете применить к нему массив, как функциональность.

Попробуйте изменить

$(xml).find("DATE").sort(mySortFunc);

с

Array.prototype.sort.apply($(xml).find("DATE"), mySortFunc);

и вы должны получить то, что вам нужно