Получение NaN при суммировании значений в цикле for - PullRequest
0 голосов
/ 23 января 2019

Я хочу суммировать значения из ответа API.Значения хранятся в формате JSON.Мой код выглядит так:

var returnCode;
var getUrl = "url";
returnCode = httpGet(getUrl);
var objekt = JSON.parse(returnCode);

function httpGet(url){
  var response = requestSync(
    'GET',
    url
    );
    return response.body;
}

var price = 0;

for(i=0; i<30; i++)
{
    price = price + objekt.data.sales[i].price;
}
price /= 30;
console.log(price);  //displays NaN
console.log(objekt.data.sales[1].price);  //displays correct price of one element

Проблема в том, что когда я пытаюсь вывести цену, он возвращает NaN, но если я просто отображаю значение одного элемента, он работает нормально.Есть идеи, почему это так?В массиве 30 элементов.

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Вы уверены, что массив objekt.data.sales содержит 30 записей? В любом случае вы должны изменить for(i=0; i<30; i++) на for(i=0; i < objekt.data.sales.length; i++). Кроме того, я предполагаю, что у вас есть числа с десятичными точками в переменной цены, которые могут быть представлены как strgin в ответе JSON. Используйте parseFloat(), чтобы убедиться, что вы суммируете фактические числа.

for(i=0; i < objekt.data.sales.length; i++)
{
    price = price + parseFloat(objekt.data.sales[i].price);
}
0 голосов
/ 23 января 2019

На самом деле значения Json представлены в виде строки

Изменить цикл for

for(i=0; i<30; i++)
{
    price = price + parseInt(objekt.data.sales[i].price);
}
...