以我自己的格式创建随机数据

时间:2014-12-10 19:26:45

标签: javascript html formatting

我想以这种格式创建一些随机数据

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

如果这是对的,我只是有点困惑......也许它迟到但我希望有人可以看看,因为浏览器没有显示对象名称。

1 个答案:

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