2011-04-11 72 views
0

我上面的數據,如何提取數組元素

var jsonData = [ 
    {date:'August 19, 2004',open:100.01,high:104.06,low:95.96,close:100.34,volume:22088000}, 
    {date:'August 20, 2004',open:101.48,high:109.08,low:100.50,close:108.31,volume:11377000}, 
    {date:'August 23, 2004',open:110.76,high:113.48,low:109.05,close:109.40,volume:9090700}, 
    {date:'August 24, 2004',open:111.24,high:111.60,low:103.57,close:104.87,volume:7599100}, 
    {date:'August 25, 2004',open:104.96,high:108.00,low:103.88,close:106.00,volume:4565900} 
]; 

我想獲取日期的所有事務所值,我用這一個

for(var i = 0; i<jsonData.length; i++) 
    var date = jsonData[i].date; 
date = date.split(' '); 
return date; 

但我我只能得到最後一個值是2004年8月25日

我怎樣才能得到所有的值?

+1

請不要調用任何舊的JavaScript對象「jsonData」,它只會在某個時刻混淆某人。 – Quentin 2011-04-11 05:10:00

+0

當你在一個循環內返回時,循環和方法在它結束。您必須以您希望的方式彙總您的數據,或者在您的循環中處理它。當你說「我想獲得所有日期的單數值」時,你是什麼意思? – ehudokai 2011-04-11 05:11:48

+0

@ehudokai:'return'實際上不在循環中。 – Guffa 2011-04-11 05:36:06

回答

0

沒有與你的循環有問題。它只運行一次,即使刪除了它,它也會保留覆蓋存儲在 date

中的值如果要存儲所有日期,則需要將其存儲到數組中並存儲日期。我不確定single values of dates是什麼意思,但是這種結構將爲您解決問題。

var dates = []; 
for(var i = 0; i<jsonData.length; i++) { 
    var date = jsonData[i].date; 
    date = date.split(' '); 
    //do whatever you want with your date. transform. 
    dates.push(date); //push the final version of the date you want to store 
} 
return dates; //return an array of dates 
+0

不,在'for'之後沒有起始括號,因此循環的內容只是它後面的單個語句。 'return'在循環之外,所以它不會退出循環。 – Guffa 2011-04-11 05:03:25

+0

因爲可怕的縮進,我沒有注意到。我以爲他剛剛離開了它。感謝您的指點 – JohnP 2011-04-11 05:05:31

0

在你的循環中,你將所有的日期放在同一個變量中,所以在每次迭代中你都覆蓋了以前的值。將日期添加到數組中:

var dates = []; 
for(var i = 0; i<jsonData.length; i++) { 
    dates.push(jsonData[i].date); 
} 
return dates; 

返回一個日期字符串數組。如果要分割的每個日期並返回字符串數組的數組:

var dates = []; 
for(var i = 0; i<jsonData.length; i++) { 
    dates.push(jsonData[i].date.split(' ')); 
} 
return dates; 
0

在循環的每次迭代中,您正在覆蓋date變量。相反,保留一個變量(初始化在循環之外)並將每個日期數組(在循環內部生成)推送給它。

這裏你定義一個循環
dates = []; 
for (idx in jsonData) { 
    dates.push(jsonData[idx].split(' ')); 
} 

// dates is an array of arrays now 
// for example: [['August', '19,', '2004'], ...] 
return dates; 
+0

非常感謝您的答覆,沒有任何工作,它仍然是一系列陣列。我已經用這種方法解決了HumbleFinance.xTickFormatter = function(n){ if(n == 0。0) \t \t { \t \t \t \t N = 0; \t \t} \t \t如果(N == 1.0) \t \t { \t \t N = 1; \t \t} 如果(N == 2.0) \t \t { \t \t N = 2; \t \t} 如果(N == 3.0) \t \t { \t \t N = 3; \t \t} \t \t \t 如果(N == 4.0) \t \t { \t \t N = 4; \t \t} var date = jsonData [n] .date; date = date.split(''); 返回日期; – Kiran 2011-04-11 05:13:42

+0

'n = parseInt(n);':) – 2011-04-11 05:22:25

0

喜所以數組中的每個值是覆蓋在日期變量的過程中它最後覆蓋值

提取您不使用循環這種類型的所有值定義

您只需編寫

var date1 = jsonData [0] .date; var date2 = jsonData [1] .date;