我正在使用JIT Infovis堆叠或单值饼图来进行一些数据可视化。堆积饼图采用对象“obj”具体使用以下结构:
这是jsonObj的硬编码版本:
var obj = {
// labelID is unique in each case and may be multiple or just one
'labelID': ['pVal'],
'values': [{ //labelName is unique in each case and will only be one
'labelName': 'name1',
//there may be multiple or just one "values"
//ex, 'values': [80, 40, 15, 10]
'values': 80
}, {
'labelName': 'name2',
'values': [20]
}, {
'labelName': 'name3',
'values': [38]
}, {
'labelName': 'name4',
'values': [58]
}]
};
我正在尝试使用返回给用户的搜索数据动态填充“obj”。但我无法使用上述特定结构创建一个空的“obj”来动态填充数据。我试了几次,但不认为我正确地创造它们。
我有三个值,我试图动态填充到这个“obj”但不能让我的手臂围绕它。 chartID[m], chartArrName[m], chartVal[m]
。
我需要一个正确的空“obj”,它对应于上面定义的结构。
var "obj" = {
label: ['pVal'],
values: [{
label: [],
values: []
}]
};
for (m = 0; m <= chartArrID.length - 1; m++) {
obj.values[m].label += chartArrName[m];
obj.values[m].values += parseFloat(chartArrVal[m]);
//json.push({label: chartArrName[m], values: parseFloat(chartArrVal[m])});
}
答案 0 :(得分:1)
这不是JSON对象。 JSON是一种轻量级数据交换格式。您只是使用对象初始化程序语法来创建对象。你可以添加你想要的东西。
var myObj = {};
myObj.name = "foo";
myObj.books = [ "one", "two" ];
myObj.emptyField = null;
myObj.emptyArray = [];
myObj["anotherField"] = "bar"; // this works too
myObj.anotherArray = [];
myObj.anotherArray[0] = {}; // you need to insert something in the first position!
myObj.anotherArray[0].label = "aaa";
myObj.anotherArray[0].value = "bbb";
myObj.anotherArray[0].xyz = "ccc";
myObj.anotherArray[1] = {}; // in the second too, of course!
myObj.anotherArray[1].label = "ddd";
myObj.anotherArray[1].value = "eee";
myObj.anotherArray[1].xyz = "fff";