我使用以下脚本来迭代对象(我不知道哪一个最好用,请告诉我哪一个是最好的):
var days = {Sunday: 0, Monday: 1, Tuesday: 2, Wednesday: 3, Thursday: 4, Friday: 5, Saturday: 6};
$.each(days, function(key, value){
$('#days').append('<li>' + key + '(' + value + ')</li>');
});
for(var key in days){
$('#days').append('<li>' + key + '(' + days[key] + ')</li>');
}
答案 0 :(得分:4)
不管怎样,你应该缓存那个选择器:
var elem = $( '#days' );
$.each(days,function(key,value){
elem.append('<li>'+key+'('+value+')</li>');
});
在这种情况下,.each()会更好。模式更清晰。
使用for循环,你想要使用obj.hasOwnProperty(key),这样你就不会通过继承属性进行挖掘......这会增加另一层缩进:
var elem = $( '#days' );
for( var key in days ){
if( days.hasOwnProperty( key ) ){
elem.append('<li>'+key+'('+days[key]+')</li>');
}
}
答案 1 :(得分:2)
很明显,如果没有任何性能测试,原生javascript for循环会更快,但对于10-20个小项目这样的小型数组没有太大区别。因此,请使用您想要的任何一个。
答案 2 :(得分:0)
$.each
的功能:如果函数返回false
,它将停止循环。它适用于对象和数组。 $(this)
指的是当前正在处理的元素。
$.each
的缺点:有一点开销,因为它会对参数进行初步检查,并且必须对每个元素执行函数调用。
但正如其他人所说,除非您处理大量物品,否则开销可能微不足道。
$.each()
的另一个好处就是容易识别这个词 - 在一个语句的开头加上它可以明显地表明你正在循环一个集合。它也很容易搜索。