Доброго времени суток! Практикуюсь в работе с функциями\массивами\объектами и впал в ступор в следующей ситуации, с чем и пришел сюда за советом от гуру :)
Суть дела: есть массив объектов и есть функция, которая выводит отсортированные данные из объектов, хранящихся в массивах. В функцию передается массив объектов и некоторый тип, в зависимости от которого строится вывод данных.
В консоли ловлю ошибку, говорящую
index.html:48 Uncaught ReferenceError: i is not defined
at sortTypeMessage (index.html:48)
at printProducts (index.html:32)
at index.html:80
Ниже фрагмент кода. Всю голову сломал. Буду рад подсказке. :) заранее спасибо за помощь. Проблема именно с выводом, код сортировки не привожу, т.к. он простой как пять копеек и без него все куда показательнее
var products = [
{name:"Grapefruit", calories: 170, color: "red", sold: 8200},
{name:"Orange", calories: 160, color: "orange", sold: 12101},
{name:"Cola", calories: 210, color: "caramel", sold: 25412},
{name:"Diet cola", calories: 0, color: "caramel", sold: 43922},
{name:"Lemon", calories: 200, color: "clear", sold: 14983},
{name:"Rapsberry", calories: 180, color: "pink", sold: 9427},
{name:"Root Beer", calories: 200, color: "caramel", sold: 9909},
{name:"Water", calories: 0, color: "clear", sold: 62123}
];
function printProducts(products, type){
var getSortMessage = sortTypeMessage(type)
for (var i = 0; i < products.length; i++) {
getSortMessage();
}
console.log("-------------");
}
function sortTypeMessage(type){
switch(type){
case 'name':
return console.log('Название продукта: ' + products[i].name);
break;
case 'sold':
return console.log(
'Продукт: '
+ products[i].name
+ 'был продан '
+ products[i].sold
+ ' раз.'
);
break;
case 'color':
return console.log(
'Продукт: '
+ products[i].name
+ 'имеет '
+ products[i].sold
+ ' цвет.'
);
break;
case 'calories':
return console.log(
'Продукт: '
+ products[i].name
+ 'имеет '
+ products[i].calories
+ ' калорий.'
);
break;
}
}
printProducts(products, "sold");