两种类型的for循环 - 如何只有其中一种是有效的?

时间:2016-11-17 16:12:09

标签: javascript for-loop

我在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循环。为什么只有其中一个(第一个)按预期工作? 第二个打印数组长度的数字。

1 个答案:

答案 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,你不想要的......