2011-04-11 66 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;