jQuery中更快的循环

时间:2015-04-18 06:44:34

标签: javascript jquery arrays object

我想用相同的值更新所有对象子值,让我们按代码执行:

var days = [
   {
      title: 'Day 1',
      checked: false
   },
   {
      title: 'Day 2',
      checked: true
   },
   {
      title: 'Day 3',
      checked: false
   }
];

现在,如果我想更新所有日期数组节点的属性checked,我会这样做:

$.each(days, function(i, day) {
   day[i].checked = true;
});

所以,我正在寻找更好的方法来做到这一点,如下:

days[*].checked = true;

提前致谢。

1 个答案:

答案 0 :(得分:4)

正如我已经在问题下面提到了评论! $.each( ... )表现非常昂贵。虽然它只能在阵列中的大量数据中检测到!

根据This Article: 这Question ......

  

最轻巧且易于使用的方式是 while loop

var len = arr.length;
while (len--) {
  arr[len] *= 2;
}
  

然后另一个更好的和更强调的是 do-while循环

var len = arr.length;
do {
  arr[len] *= 2;
} while (len--);
  

最不可取的是阵列地图

arr.map(function(el) {
  return el * 2;
});

enter image description here

还有很多其他方法可以循环遍历数组,并且比上面几种方法都要昂贵。

编辑后:

$.each()循环的缺点:

  1. 与其他循环(游戏/动画/大型数据集)相比性能较低
  2. 对迭代器的控制较少(跳过项目,从列表中拼接项目等)。
  3. jQuery库的依赖关系不同于,等等,循环!
  4. 与大多数其他类似语言一样,语法不熟悉。