我不知道如何从json数组中提取键/值以将它们挂钩到javascript数组的不同部分。
E.g。我有2个json数组,如下所示:
系列1:
{"label1":"91970","label2":"1231", ... "labeln": "somenumbers".}
系列2:
{"label1":"4556","label2":"3434", ....}
我想将它们转换为1个javascript对象(用于nvd3绘图),如下所示:
long_short_data = [
{
key: 'Series1',
color: '#d62728',
values: [
{
"cell" : "label1" ,
"value" : 91970
} ,
{
"cell" : "label2" ,
"value" : 1231
} ,
.....
]
},
{
key: 'Series2',
color: '#1f77b4',
values: [
{
"cell" : "label1" ,
"value" : 4556
} ,
{
"cell" : "label2" ,
"value" : 3434
} ,
...
}
]
}
];
感谢您的帮助。
答案 0 :(得分:0)
给定一个JSON字符串,您应该先调用JSON.parse()
将其转换为Javascript对象。
然后,您可以使用函数Object.keys(obj)
返回直接属于obj
的属性数组来构建数组:
var array = [];
for (var ii = 0, keys = Object.keys(series); ii < keys.length; ii++) {
array.push({ cell : keys[ii], value : series[keys[ii]] });
}
答案 1 :(得分:0)
您可以考虑使用d3.keys,例如:
var series1 = {"label1":"91970","label2":"1231","labeln": "453453"};
var series2 = {"label1":"4556","label2":"3434"};
var long_short_data = [
{
key: 'Series1',
color: '#d62728',
values: []
},
{
key: 'Series2',
color: '#1f77b4',
values: []
}
];
d3.keys(series1).forEach(function(d) {
long_short_data[0].values.push(
{
"cell" : d ,
"value" : +series1[d]
}
);
});
d3.keys(series2).forEach(function(d) {
long_short_data[1].values.push(
{
"cell" : d ,
"value" : +series2[d]
}
);
});
将按照您的问题中的定义创建 long_short_data