JQuery $.each против JavaScript.forEach
Возьмите два способа удаления массива элементов из DOM с помощью jQuery:
var collection = [...]; // An array of jQuery DOM objects
// Using jQuery iteration
$(collection).each(function(index, element) { element.remove(); });
// Or as pointed out by Barmar
$(collection).remove();
// Using native iteration
collection.forEach(function(element) { element.remove(); });
Есть ли какая-либо реальная разница в оперативном режиме? Я ожидал бы, если интерпретатор/компилятор браузера не будет достаточно умным, что будет лишний лишний накладной ресурс с прежним методом, хотя, вероятно, и незначительный, если массив мал.
Ответы
Ответ 1
С практической точки зрения это немного расплывчато, но вот как реализован $.each
https://github.com/jquery/jquery/blob/master/src/core.js#L296
[].forEach()
, скорее всего, будет реализовано в собственном коде для каждого браузера.
Без тестирования производительности они очень похожи. Хотя, если вы можете удалить JQuery в целом, это не менее нескольких КБ, браузер не нужно загружать
Ответ 2
Комментарии к исходному вопросу подходят для вашего конкретного сценария, когда вы хотите удалить отдельные элементы.
На более общей ноте, некоторые другие различия:
1) Array.forEach() очевидно требует, чтобы вы перебирали массив. Подход jQuery позволит вам перебирать свойства объекта.
2) jQuery.each() разрешает короткое замыкание. Прочтите этот пост, в котором упоминается использование "some()" и "every()" для выполнения аналогичных действий с чистым js:
Как замкнуть Array.forEach, например, вызвать прерывание?
Ответ 3
По производительности они оба похожи Perf test
forEach реализован встроенным в браузере, что упрощает поддержку для разработчиков, не являющихся jquery, в то время как с другой стороны, каждый обеспечивает лучшую читаемость.
Ответ 4
Array.forEach - это метод, который выполняет итерацию по собственным массивам Javascript.
jQuery collection.each - это метод итерации, реализованный командой jQuery вручную. коллекция jQuery не является массивом.
Это также было более актуальным, когда впервые появился jQuery, а Array.forEach не был реализован в каких-либо браузерах.