我在Javascript中有以下代码:
var controller = {
initApp: function(){
var getCartData = $.ajax({ url: '/cart' }),
getCategoryData = $.ajax({ url: '/categories' }),
getSupplierData = $.ajax({ url: '/suppliers'}),
getProdcuts = $.ajax({url: '/products'});
// Main controller logic starts when all data are loaded in
$.when(getCartData, getCategoryData, getSupplierData, getProdcuts
).done( function( cart, categories, suppliers, products ) {
var model = new Model(cart, categories, suppliers, JSON.parse(products[0]));
console.log(model.products);
console.log(typeof model.products);
for(var i = 0; i<model.products.length; i++){
console.log(model.products[i]);
}
for(product in model.products){
console.log(product);
}
});
}
};
我想遍历model.products。在代码的最后我使用两种类型的for循环。为什么只有其中一个(第一个)按预期工作? 第二个打印数组长度的数字。
答案 0 :(得分:0)
Produkt也是关键:
a={a:1,b:2}
for(key in a){
alert(key);// a. B.
}
所以你需要这样做:
for(product in model.products){
console.log(model[product]);
}
但你应该使用普通for循环。为什么?因为原型也是用键处理的:
Array.prototype.test=2;
使用之前执行的代码运行booth循环。因为in也会回应2,你不想要的......