2015-02-07 50 views
0

我陣列的平均計算功能上聲明如下更新了的jsfiddle:獲取NaN當我需要一個數組

var stocks = new Array(); 

我收到來自谷歌趨勢號碼的清單,並把它變成一個數組。這是console.log('股票是',股票);

The stocks are [47, 65, 81, 100, 86, 76, 57, 54, 80, 81, 92, 82, 81, 59, 48, 77, 90, 86] 

這是我的平均功能。它返回NaN而不是平均值。

function avgOut(values) { 

    var average = 0; 
    for (var i = 0; i < values.length; i = i + 1) { 
     average = average + values[i]; 

    } 
    return (average/values.length); // returns NaN 
} 

編輯:這裏是的jsfiddle http://jsfiddle.net/caduekL2/

+0

股票數組是如何與給定的代碼相關的 – 2015-02-07 22:55:44

+0

當我嘗試它時,它不會返回NaN:http://jsfiddle.net/Guffa/1om4svp2/ – Guffa 2015-02-07 22:56:20

+0

您是否檢查過「值」是否確實包含正確的值?如果它是空的,values.length是'0',你會得到一個除零的結果,這導致NaN。也許你錯誤地將'stocks'傳遞給函數。 – GolezTrol 2015-02-07 22:56:49

回答

2

Guffa是正確的吧,一般的功能正常工作。您收到NaN是因爲在調用Google服務器返回之前,發生了對avgOut的調用。

使用JSONP使整個事情變得異步,並且當你使用變量時你必須密切關注。

console.log(avgOut(股票))應該發生在你的回調函數中,在這種情況下,它看起來像在JSFiddle鏈接的第22行開始。

+0

是的,就像我在我的答案傷心.. – 2015-02-07 23:12:17

+0

是啊,我打字我的。 – mattandersen 2015-02-07 23:15:37

相關問題