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

Create Random data in my own format

本文关键字:随机 数据 创建 格式 我自己 自己的      更新时间:2023-09-26

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

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

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

您使用错误的语法将对象推送到数组。像 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]
});