Почему цикл forEach в JS выкидывает ошибку?

Доброй ночи! Вопрос такой:
1) Есть API которое возвращает json обьект, пример:
{0: {…}, 1: {…}, 3: {…}}
0:{id: "2", name: "Маки с копченым лососем", group_id: "2", unit: "гр.", unit_total: "110", …}
1:{id: "2", name: "Маки с икрой", group_id: "2", unit: "гр.", unit_total: "110", …}
3:{id: "2", name: "Маки с огурцом", group_id: "2", unit: "гр.", unit_total: "110", …}

2) Есть JS цикл forEach, который перебирает массив и строит страницу:
data.forEach(function(item, i, data) {
                                    $('#basket').append('<tr style="border: 0px;cursor:pointer;" class="table-row" onclick="delbasket('+item.id_goods+');"><td class="table-img"><img src="/templates/images/goods/'+item.photo+'" style="width: 60px" alt=""></td><td class="table-text"><h6>'+item.name+' ('+item.unit_total+' '+item.unit+')</h6><p>'+item.sostav+'</p></td><td style="width: 18%;text-align: center;"><span class="mar">'+item.group_name+'</span></td><td style="width: 15%;"><code>'+item.price+' <i style="color: #c7254e;vertical-align: middle;" class="fa fa-rub"></i></code></td></tr>');
                                    window.totalPrePrice = Number(totalPrePrice)+Number(item.price);
                                });

Но все это дело работает через раз и как попало и выкидывает в консоль ошибку
Uncaught TypeError: data.forEach is not a function

При этом при просмотре в консоле видно, что ответ пришел и он не пустой...
Куда копать, как исправить? Спасибо...
  • Вопрос задан
  • 237 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
[].forEach.call(data, function (item, index) {
  // ...
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
патамущта этот цикл для массивов, а не объектов
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы