2010-12-18 46 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 
]) 
相關問題