我正在使用JSON Generator https://next.json-generator.com播种我的MongoDB数据库。我发现要从预定义的组中生成随机的一组颜色(从一到六种)很麻烦。
我成功生成了除颜色以外的所有其他属性值。我需要availableColors键来从六种预定义的集合中生成随机可变数量的颜色:“蓝色”,“棕色”,“绿色”,“白色”,“黄色”,“灰色”。
这里是在线生成器的URL,可以对其进行实时编辑:https://next.json-generator.com/E1g60a1pL
代码如下:
[
{
'repeat(5, 10)': {
id: '{{objectId()}}',
name: '{{firstName()}}',
price: '{{floating(5, 4000, 2, "$0,0.00")}}',
availableColors: (colors) => {
var condition = '{{integer(1, 6)}}';
var color = [];
for (j = 0; j < condition+1; j++)
{color [j] = '{{random("blue", "brown", "green", "white", "yellow", "gray")}}';}
let unique_array = [];
for(let i = 0;i < color.length; i++) {
if(unique_array.indexOf(color[i]) == -1){
unique_array.push(color[i]);
}
}
return unique_array;
},
weight: '{{floating(1, 4000, 2, "0.00")}}',
inStock: '{{integer(0, 2000)}}'
}
}
]
这是我得到的结果:
[
{
"id": "5ce82b1302c9777aac5fd681",
"name": "Blake",
"price": "$389.53",
"availableColors": [],
"weight": "3753.22",
"inStock": 449
},
{
"id": "5ce82b137ab9fe24eda22714",
"name": "Felicia",
"price": "$3,190.01",
"availableColors": [],
"weight": "3797.51",
"inStock": 1288
},
{
"id": "5ce82b135414eb7550aee368",
"name": "Bettye",
"price": "$227.41",
"availableColors": [],
"weight": "2182.52",
"inStock": 1288
},
{
"id": "5ce82b13f751e63a8506fbf2",
"name": "Mullen",
"price": "$3,306.81",
"availableColors": [],
"weight": "694.51",
"inStock": 821
},
{
"id": "5ce82b130544c7c08086a6bc",
"name": "Angelita",
"price": "$734.90",
"availableColors": [],
"weight": "3.44",
"inStock": 226
},
{
"id": "5ce82b130d9e2fc4c2a21e22",
"name": "Mcknight",
"price": "$3,582.76",
"availableColors": [],
"weight": "1183.82",
"inStock": 1917
},
{
"id": "5ce82b13fb509ee9c384a096",
"name": "Nannie",
"price": "$3,479.29",
"availableColors": [],
"weight": "754.85",
"inStock": 716
},
{
"id": "5ce82b13881cb29ec7a1772b",
"name": "Sutton",
"price": "$1,726.83",
"availableColors": [],
"weight": "1382.76",
"inStock": 1911
},
{
"id": "5ce82b1386ad13bffcf0923b",
"name": "Maria",
"price": "$1,679.58",
"availableColors": [],
"weight": "1106.28",
"inStock": 5
},
{
"id": "5ce82b13fccd87dbe6451971",
"name": "Noble",
"price": "$309.25",
"availableColors": [],
"weight": "1657.83",
"inStock": 235
}
]
我希望任何文档的“ availableColors”都是由一到六个预定义颜色组成的数组。有想法吗?
答案 0 :(得分:1)
您需要使用Math.random进行纯JavaScript循环 我已经更新了链接: https://next.json-generator.com/EJXO4xfaU
答案 1 :(得分:0)
在深入研究了JSON Generator主页上提供的示例之后,我发现了如何使用其关键字来获得相同的结果。顺便说一句,按照我的文档架构,我添加了一种方式来随机提供是否为所有不需要的属性提供值。
以下是在线编辑器的网址:https://next.json-generator.com/4k8Wd87pU
代码如下:
[
{
'repeat(5, 10)': {
id: '{{objectId()}}',
name: '{{firstName()}}',
price (tags) {
const nRequired = tags. integer (0,5);
if (nRequired) {return tags.floating(5, 4000, 2, "$0,0.00");}
},
availableColors (tags) {
const nRequired = tags. integer (0,3);
if (!nRequired) return;
const Colors = ['blue','brown','green','white','yellow','gray'];
const nColors = tags.integer(0, Colors.length - 1); // generate a random integer from 0 to 5 will be used to select the total number of colors to add as values
const aColors =[];
for (j = 0; j <= nColors && !aColors[j] ; j++) {
let sColor = tags.integer(0, Colors.length - 1); // generate a random integer from 0 to 5 that will be used as index to select a random color from the Colors array
if (aColors.indexOf(Colors[sColor]) == -1) {aColors.push(Colors[sColor]);}
}
return aColors;
},
weight (tags) {
const nRequired = tags.integer (0,5);
if (nRequired) {return tags.floating(1, 900, 2, "0.00");}
},
inStock (tags) {
const nRequired = tags.integer (0,2);
if (nRequired) {return tags.integer(0, 2000);}
}
}
}
]