2010-12-18 49 views
6

基本上我有以下的JSON发起对象:如何建立键值的JavaScript数组形成一个JSON对象

({ 
    "id" : 3, 
    "clientName" : "Avia", 
    "monthlyactiveusers" : 2083, 
    "dailynewlikes" : 0, 
    "totallikes" : 4258, 
    "usersgraph" : { 
     "sTotalLikes" : [{ 
      "likes" : 79, 
      "date" : "1/1/2010" 
     }, 
     { 
      "likes" : 116, 
      "date" : "1/1/2010" 
     }], 
     "sDailyActiveUsers" : [{ 
      "likes" : 79, 
      "date" : "1/1/2010" 
     }, 
     { 
      "likes" : 116, 
      "date" : "1/1/2010" 
     }] 
    } 
}); 

我需要以下结果:

sTotalLikes = [['1/1/2010', 79],['1/1/2010', 79],['1/11/2010', 79]]; 
sDailyActiveUsers = [['1/1/2010', 10],['1/5/2010', 300],['1/11/2010', 220]]; 

我知道你可以遍历对象来使用下面的代码构建数组,但我无法弄清楚如何构建JavaScript数组本身。预先感谢您的帮助。

var sTotalLikes = new Array(); 

for (var i = 0; i < usersgraph.sTotalLikes.length; i++) { 
    //how do I build the arry ? 
    sTotalLikes[i] 
    } 
+0

让我想知道JavaScript数据结构中是否存在某种奇怪的数据透视实用工具。这将是有益的。 – 2010-12-18 01:44:29

+3

...它是一个对象字面值,而不是JSON对象(虽然它可能*是当它在字符串中时是JSON对象)。幸运的是,我现在将这个URL加入书签:http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/ – 2010-12-18 01:51:10

+0

@Felix:是的,+1 - 带引用键的JS对象一个“JSON对象”不做。 – 2010-12-18 02:02:17

回答

2

你必须通过每个项目sTotalLikessDailyActiveUsers到迭代。

你也可以see the live demo here与完整和工作计划的意见。 :)

// declare arrays for storing total likes and active users 
var totalLikes = []; 
var activeUsers = []; 



// first iterate for total likes 
for (var i = 0; i < data.usersgraph.sTotalLikes.length; i ++) 
{ 
    var like = data.usersgraph.sTotalLikes[i]; 

    // create a new array of date and likes 
    // and push into total likes 
    totalLikes.push([like.date, like.likes]); 
} 



// then iterate for active users 
for (var i = 0; i < data.usersgraph.sDailyActiveUsers.length; i ++) 
{ 
    var user = data.usersgraph.sDailyActiveUsers[i]; 

    // create a new array of date and likes 
    // and push into active users 
    activeUsers.push([user.date, user.likes]); 
} 

希望这有助于!

+0

+1为了更好的细节 – Singleton 2010-12-18 20:57:41

+0

哇! jsfiddle.net很棒。感谢您指出了这一点。这正是我需要测试我的员工。我使用jqplot,最初我试图用上面指定的Json字符串来提供它,但由于某种原因,它不喜欢它,所以我只是建立一个JavaScript数组它。再次感谢您的帮助。 – 2010-12-19 03:25:00

+0

永远欢迎:) – 2010-12-19 08:14:17

2

试试这个..你可以轻松地将其延长sDailyActiveUsers

var sTotalLikes = new Array(); 
    var lsTotalLikes = usersgraph.sTotalLikes; 
for (var i = 0; i < lsTotalLikes.length; i++) 
{ 

    var obj = lsTotalLikes[i]; 
     var lArr = [] 
     lArr.push(obj.date); 
     lArr.push(obj.likes); 
     sTotalLikes.push(lArr) 
    } 
+1

首选'var sTotalLikes = [];'代码中的代码。 – SuperSaiyan 2010-12-18 04:34:52

+1

:)我不想改变OP的初始代码,你可以看看lArr的定义,我已经使用过[],因为我很懒,所以键入:) – Chandu 2010-12-18 04:37:03

1

像你只是想看看对象的值在我看来。噢,如果你还没有猜到,你可以用[]来创建一个数组,然后{}创建一个对象/关联数组。

0

像这样(指你的代码):

/* inside your for loop */ 
sTotalLikes.push([ 
    usersgraph.sTotalLikes[i].date, 
    usersgraph.sTotalLikes[i].likes 
]) 
相关问题