У меня есть следующий код 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 ... of' вместо' for ... in' – Sirko
Прочитать [для ... в | MDN] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/for...in) Вы повторяете свойства, а не значения. Затем прочитайте [для ... из | MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of) –