在for循环中求和时获得NaN

时间:2019-01-23 09:18:28

标签: node.js api nan

我想对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,但是如果我仅显示单个元素的值,则效果很好。任何想法为什么这样做? BTW数组中有30个元素。

2 个答案:

答案 0 :(得分:1)

实际上Json值以字符串形式出现

更改for循环

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

答案 1 :(得分:0)

您确定 While i <= n distance(i, 0) = System.Math.Min(System.Threading.Interlocked.Increment(i), i - 1) End While Dim j As Integer = 0 While j <= m distance(0, j) = System.Math.Min(System.Threading.Interlocked.Increment(j), j - 1) End While 数组包含30个条目吗?无论如何,您应该将objekt.data.sales更改为for(i=0; i<30; i++)。此外,我假设您在price变量中具有带小数点的数字,这在JSON响应中可能表示为strgin。使用for(i=0; i < objekt.data.sales.length; i++)来确保要对实际数字求和。

parseFloat()