[英]How to build a JavaScript array of key values form a json object
Basically I have the following JSON-originated Object: 基本上我有以下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 you can iterate through the object to build the array using the following code but I couldn't figure out how to build the JavaScript array itself. 我知道您可以使用以下代码遍历对象来构建数组,但我无法弄清楚如何构建JavaScript数组本身。 Thanks in advance for help.
在此先感谢您的帮助。
var sTotalLikes = new Array();
for (var i = 0; i < usersgraph.sTotalLikes.length; i++) {
//how do I build the arry ?
sTotalLikes[i]
}
Try this.. you can easily extend it for sDailyActiveUsers 试试这个..你可以轻松地扩展它为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)
}
You'll have to Iteration through each item in sTotalLikes
and sDailyActiveUsers
. 你必须通过
sTotalLikes
和sDailyActiveUsers
每个项目进行迭代。
You can also see the live demo here for 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! 希望这可以帮助!
It looks to me like you just want to look at the values of the 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 had not guessed already you can use [] to create an array and {} to create an object/associative array. 哦,如果你还没有猜到,你可以使用[]创建一个数组,{}来创建一个对象/关联数组。
Like this (referring to your code): 像这样(指你的代码):
/* inside your for loop */
sTotalLikes.push([
usersgraph.sTotalLikes[i].date,
usersgraph.sTotalLikes[i].likes
])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.