我们说我有
$.each(data,function(i,item){
...
});
我得到$ .each将迭代对象(或数组)数据,但我对该函数感到困惑。为什么"我"在循环上递增1(" i" ++)以及定义" item"是数据[i]?这只是一个应用于对象或数组中每个项目的内置函数机制吗?
由于
答案 0 :(得分:0)
它正是一个内置的jquery函数,对于每个项目(使用for循环,它应用你提供的函数,传递给函数索引和元素[index])。此外,它比检测$ .each中的第一个参数是json还是数组更聪明 - 对于数组 - 为json传递索引,键与值一起传递。)
类似的实现如下:
function each(x, fn) {
if(x.constructor == Array) {
for(var i = 0; i < x.length; i++) {
fn(i, x[i]);
}
} else if (x.constructor == Object) {
for(var key in x) {
fn(key, x[key]);
}
} else {
throw Exception('Non array or object passed');
}
}
each([1,2,3], function(ind, el) {console.log(ind, el)});
each({x:1, y:2}, function (key, el) { console.log(key, el) });
答案 1 :(得分:0)
jQuery的.each()函数调用你的回调函数,元素的索引作为第一个参数,元素的值作为第二个参数。 您可以在此处找到相关文档: http://devdocs.io/jquery/jquery.each
答案 2 :(得分:0)
这是一个&#34;假设的实施&#34;这说明了如何实现这一目标:
var myEachFunction = function (array, callback) {
var i, len;
for (i = 0, len = array.length; i < len; ++i) {
callback(i, array[i]);
}
};
// Usage: myEachFunction([5, 6, 7], function (i, item) {
// doSomething();
// });
在这个实现中,我按顺序调用带有循环索引和项值的提供的回调函数。
jQuery的实现类似,但更为复杂。除了错误/参数检查之外,它还支持迭代对象,而不仅仅是数组。 jQuery文档提供了有关以什么顺序传递哪些参数的更多信息。