我想以这种格式创建一些随机数据
var dataStructure = [
{
"data":[
{
"itemLabel":"label1",
"itemValue":0.8
},
{
"itemLabel":"label2",
"itemValue":0.2
},
{
"itemLabel":"label3",
"itemValue":0.7
},
{
"itemLabel":"label4",
"itemValue":0.1
},
],
"label":"biglabel1"
},
{
"data":[
{
"itemLabel":"label1",
"itemValue":0.5
},
{
"itemLabel":"label2",
"itemValue":0.9
},
{
"itemLabel":"label3",
"itemValue":0.1
},
{
"itemLabel":"label4",
"itemValue":0.3
},
],
"label":"biglabel1"
}, ...
]
我写了这段代码
var item = ["label1", "label2", "label3", "label4", "label5"];
var dataStructure2 = [],
dat = [];
data = {};
object = {};
label = ["biglabel1","biglabel2","biglabel3","biglabel4"];
for (var i=0; i<4; i++){
for(var j=0; j<4; j++){
dat.push(data.itemLabel = item[i]);
dat.push(data.itemValue = Math.random());
}
dataStructure2.push(object.data = data, object.label = label[i]);
}
如果这是对的,我只是有点困惑......也许它迟到但我希望有人可以看看,因为浏览器没有显示对象名称。
答案 0 :(得分:1)
您使用错误的语法将对象推送到数组。像dat.push(data.itemLabel = item[i]);
之类的语句不会将对象放入数组中并设置对象的属性。表达式data.itemLabel = item[i]
将把值放在对象中,但表达式的值是item[i]
,这就是推送到数组的内容。
您需要为要推送到数组中的每个项目创建一个新对象:
var item = ["label1", "label2", "label3", "label4", "label5"];
var dataStructure2 = [], dat, data, object;
var label = ["biglabel1","biglabel2","biglabel3","biglabel4"];
for (var i=0; i<label.length; i++){
dat = [];
for(var j=0; j<item.length; j++){
data = {};
data.itemLabel = item[i];
data.itemValue = Math.floor(Math.random() * 10) / 10;
dat.push(data);
}
object = {};
object.data = dat;
object.label = label[i];
dataStructure2.push(object);
}
或者,您可以使用对象文字语法,而不是先创建对象然后再设置属性。例如:
object = {
data: dat,
label: label[i]
};
您实际上可以直接推送对象而不将其存储在变量中:
dataStructure2.push({
data: dat,
label: label[i]
});