How to build an array of JavaScript keys using a json object

Basically, I have the following object created by 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" }] } }); 

And I need the following result:

 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]]; 

I know that you can iterate through an object to build an array using the following code, but I could not figure out how to build the JavaScript array itself. Thank you in advance.

 var sTotalLikes = new Array(); for (var i = 0; i < usersgraph.sTotalLikes.length; i++) { //how do I build the arry ? sTotalLikes[i] } 
+6
json javascript jquery object arrays
source share
4 answers

You need to iterate through each element in sTotalLikes and sDailyActiveUsers .

You can also watch a live demo here for a complete and working program with comments. :)

 // 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]); } 

hope this helps!

+2
source share

Try this .. you can easily expand it for 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) } 
+2
source share

It seems to me that you just want to look at the values ​​of objects.

 var usersgraph = { ... }; // pulled from the data in your question var result = {}; for (users_key in usersgraph) { var vals = []; var data = usersgraph[users_key] for (k in data) { vals.push(values(data[k])); // or if you need to order them differently.. //vals.push([ data[k]['date'], data[k]['likes'] ]); } result[users_key] = vals; } 

Oh, if you haven’t already guessed, you can use [] to create an array and {} to create an object / associative array.

+1
source share

Like this (referring to your code):

 /* inside your for loop */ sTotalLikes.push([ usersgraph.sTotalLikes[i].date, usersgraph.sTotalLikes[i].likes ]) 
0
source share

All Articles