2011-04-06 44 views
1

我有一个要求,其中i需要通过JSON格式数据循环,并从该通过JSON格式数据循环与构建数组

我有数据的这种格式作为名称值对构建的阵列

var jsonData = [{date:'August 19, 2004',volume:22088000}, 
       {date:'August 20, 2004',volume:22088333} , 
       {date:'August 21, 2004',volume:22088555}] 

我想有上述一个JavaScript阵列中的所有这卷标数据,使得它是从0开始,上升至n的日期,应该建立一个数组,如图

var volumeData = [[0,22088000],[1,22088333],[2,22088555]]; 

不限想法,如何实现这一点。

任何事情都可以用纯JavaScript的jQuery来完成。

+1

你已经写在标题:您必须在数据上循环**。哪里有问题?你有什么尝试?为什么你需要一个数组数组?内部数组的第一个元素已经隐式可用作数组的索引。 – 2011-04-06 09:17:27

回答

1

它不是JSON,它是一个JavaScript对象。但是,你可以这样做:

var volumeData = []; 
for(var i = 0; i<jsonData.length; i++) { 
    result.push([i, jsonData[i].volume]); 
} 
return volumeData; 
+0

有些人称之为“JavaScript中的JSON”或“JSON对象”只是JavaScript中的普通对象(用对象字面量来定义)。仅仅因为它们看起来相似并不意味着它们是相同的。如果'jsonData'是“JavaScript中的JSON”,那么它将是一个字符串,需要先解析。 – 2011-04-06 09:22:30

+0

那么JSON是JavaScript对象的一个​​子集,这就是我作出区分的原因。我将“JSON”视为子集,这是一种与语言无关的数据交换格式。通过“JavaScript中的JSON”我的意思是JSON子集的超集,它隐式包含子集。 JSON将始终是一个有效的JavaScript对象,因为它基于JavaScript对象表示法,您不必从字符串中解析它。 – EMMERICH 2011-04-06 09:35:26

+0

非常感谢fd,Sydenam,EMMERICH。这个网站和你所有的人都非常好。 – Kiran 2011-04-06 09:36:23

1
jQuery.map(jsonData, function(elem, idx) { return [idx, elem.volume]; }) 
0
var volumeData = []; 
for (var i in jsonData) { 
    volumeData.push(jsonData[i].volume); 
} 

我喜欢做的for循环像这样的对象(我认为它看起来更干净,让我想起了C#)

+0

不正确,这会产生'[22088000,22088333,22088555]' – EMMERICH 2011-04-06 09:36:18

+0

'jsonData'不是一个对象,它是一个数组。你不应该用'for ... in'来循环数组。 – 2011-04-06 09:44:38