$.each()可用于遍历任何集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值,方法会返回被遍历对象的第一参数。 $.each()循环里,没有break,continue,可以有return。return alse跳出本次循环并执行循环体后的代码,return true结束本次循环执行下一次循环。 结合jquery源码, 当对象中存在length属性时,$.each 内部使用for循环去遍历对象,,否则它将使用for in循环去遍历。

一、语法

//一维数组
var arr = [1,2,3,4,5];
$.each(arr, function(){
  console.log(this);
});
$.each(arr, function(index,ele){
  console.log(index + ':' + ele);
});
//二维数组
var arr = [[1, 4, 3], [4, 6, 6], [7, 20, 9]]
$.each(arr, function(i, item){
  console.log(item[0]);
});
//遍历对象属性
var obj = { one:1, two:2, three:3, four:4};
$.each(obj, function(key, val) {
  console.log(obj[key]);
  //console.log(key + ':' + val);
});

$.each()可用于遍历任何集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值,方法会返回被遍历对象的第一参数。

$.each()循环里,没有break,continue,可以有return。return alse跳出本次循环并执行循环体后的代码,return true结束本次循环执行下一次循环。

结合jquery源码, 当对象中存在length属性时,$.each 内部使用for循环去遍历对象,,否则它将使用for in循环去遍历。

二、执行效率

var arr = [],
    arrlen = arr.length = 1000000;
for(var i=0; i<arrlen; i++){
  arr[i] = 'looptest';
}
var t1 = +new Date();
$.each(arr, function(i, ele){
});
var t2 = +new Date();
console.log('$.each:' + (t2-t1));

比every慢。

博客签名:敬畏生命,珍惜时间,热爱生活。