循环迭代不必要影响速度吗?

时间:2013-02-26 10:41:57

标签: javascript optimization for-loop

我的动态HTML包含许多<div>groupX类,其中X是介于1和100之间的数字。我需要找出有多少个组在用于在应用程序的其他地方使用,并在此刻拥有此代码:

for(i = 0; i <= 100; i++){                       
  if($j('.group' + i).size() > 0) {          
    totalAmountOfGroups++; 
  }
} 

虽然有时候只有6组可以使用,但是我不必要地循环了94次,并且想知道这是否会影响速度(尤其是内部的jQuery)

3 个答案:

答案 0 :(得分:3)

这取决于for正文中执行的内容。问题中的那个似乎并不太昂贵。但是,我会寻求一个不同的解决方案。生成HTML时,您可以在没有计数器的情况下向元素添加另一个类。例如。 class="group group14"。这样您就可以使用选择器$('.group'),这样您只需遍历所需的元素。

答案 1 :(得分:2)

Try like this

这不是一个好方法,但比你接近更快。最好的方法是按类'group'标记所有元素,并在数据属性中存储组号,如data-group =“n”。在此之后,您可以通过一个操作选择所有元素,然后迭代所选元素以从属性中提取组编号。

答案 2 :(得分:1)

您可以在群组中添加另一个类,让我们将其称为分组,然后使用正则表达式对其进行过滤

var total = 0;
total = $('.grouped').filter(function(){
    return $(this).attr('class').match(/group[d+]/g);
}).size();