自己也模仿这做了一个可以返回一条或者多条的随机数据 [底部有使用方法的例子]
/* getMathBoolean : 随机布尔值 getMathNumber : 返回一个随机数 [返回一个默认0-1000的随机整数] getMathColor : 返回16进制随机颜色值 getMathDate : 返回随机日期 getMathName : 随机名字 getMathChara : 返回单个文字 getMathOneChara : 返回一句话 getMathChin : 返回随机多句话 */ /* 返回对象多条数据 arr : 数据格式 num : 数据条数 */ function setMathData(arr, num) { let new_arr = arr ?? null; let new_num = num ?? 1; if (new_arr != null) { let arr_list = []; for (let i = 0; i < new_num; i++) { // 需求的长度 let keys_list = Object.keys(new_arr); let value_list = Object.values(new_arr); let return_new_arr = {} for (let j = 0; j < keys_list.length; j++) {
if (Object.prototype.toString.call(value_list[j]) == "[object Object]") {
return_new_arr[keys_list[j]] = setMathData(value_list[j])
}else{
return_new_arr[keys_list[j]] = eval(value_list[j])
} } arr_list.push(return_new_arr) } return arr_list; } } /* -------------------------------------------------返回布尔值--------------------------------------------------------------------- */ // 返回布尔值 function getMathBoolean(value) { // Number 返回true的概率 1-10 对应 10% - 100% let Number = value ?? 5; // 默认值 true和false 出现的概率是相同的. if (Number) { let random = Math.floor(Math.random() * 10); if (random < Number || random == Number) { return true } else { return false } } else { return null; } } /* -------------------------------------------------返回随机数值--------------------------------------------------------------------- */ /* min 最小值 max 最大值 decimal 小数位数 不传则返回整数 ; minus 负数出现的概率 1-10 对应 10%-100% , 不传则返回正数 */ // 返回随机整数或含有小数的数字 function getMathNumber(min, max, decimal, minusProbability) { max = max ?? 1000; min = min ?? 0; decimal = decimal ?? null; // 默认位整数 let minus = minusProbability ?? null; //默认是正整数 let value = "" if (decimal) { // 返回含有小数 value = (Math.random() * (max - min) + min).toFixed(decimal); } else { // 返回整数 value = Math.floor(Math.random() * (max - min) + min); } if (minus) { if (Math.floor(Math.random() * 10) < minus) { // 负数的概率 return "-" + value; } else { return value; } } else { return value; } } /* -------------------------------------------------返回随机颜色值--------------------------------------------------------------------- */ // 通过需求返回需要的类型(颜色值)。二次封装 type可以选择的值有 rgb rgba hsl function getMathColor(type) { // 默认16进制的 if (type) { if (type == "rgb") { // rgb格式的 return getRandomRgb(); } if (type == "rgba") { //rgba格式的 return getRandomRgba(); } if (type == "hsl") { // hsl格式的 return getRandomHsl(); } } else { // 16进制的颜色值 return getRandomColor(); } } /* 返回16进制的随机颜色 */ function getRandomColor() { let colorList = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, "A", "B", "C", "D", "E", "F"] let color = "#" for (i = 0; i < 6; i++) { color = color + colorList[Math.floor(Math.random() * colorList.length)] } return color; } // 返回RGB格式的随机颜色 function getRandomRgb() { let rgb = "rbg("; for (let i = 0; i < 3; i++) { if (i == 2) { rgb = rgb + Math.floor(Math.random() * 255) + ")"; } else { rgb = rgb + Math.floor(Math.random() * 255) + ","; } } return rgb; } // 返回RGB格式的随机颜色 function getRandomRgba() { let rgba = "rbga("; for (let i = 0; i < 3; i++) { if (i == 2) { rgba = rgba + Math.floor(Math.random() * 255) + ")"; } else { rgba = rgba + Math.floor(Math.random() * 255) + ","; } } return rgba; } // hsl格式的随机颜色 function getRandomHsl() { let hsl = ""; let hue = Math.floor(Math.random() * 360); //色相 let saturation = Math.floor(Math.random() * 100) + "%"; // 饱和度 let lightness = Math.floor(Math.random() * 100) + "%"; // 亮度 hsl = `${hsl}(${hue},${saturation},${lightness})`; return hsl; } /* -------------------------------------------------日期/时间--------------------------------------------------------------------- */ /* 完整格式展示 : "YYYY-MM-DD HH:SS:MM" type : 返回的格式 dateSeparator : 日期分隔符 timeSeparator : 时间分隔符 isCurrent : 是否是当前时间 //默认获取随机当前时间 */ function getMathDate(type, dateSeparator, timeSeparator, isCurrent) { // 缺少正则判断 let getType = type ?? "YYYY-MM-DD HH:SS:MM"; let getD = dateSeparator ?? "-"; let getT = timeSeparator ?? ":"; let current = isCurrent ?? true; let date = new Date(); let currentTime = { // 当前时间 Y: date.getFullYear(), M: dateReplenish(date.getMonth() + 1), D: dateReplenish(date.getDate()), h: dateReplenish(date.getHours()), s: dateReplenish(date.getMinutes()), m: dateReplenish(date.getSeconds()) } let randomTime = { Y: getMathNumber(1970, date.getFullYear()), M: getMathNumber(0, 12), D: getMathNumber(1, 31), h: dateReplenish(getMathNumber(0, 24)), s: dateReplenish(getMathNumber(0, 59)), m: dateReplenish(getMathNumber(0, 59)) } let { Y, M, D, h, s, m } = current ? randomTime : currentTime if (getType == "YYYY-MM-DD") { return `${Y}${getD}${M}${getD}${D}`; } if (getType == "HH:SS:MM") { return `${h}${getT}${s}${getT}${m}` } if (getType == "YYYY-MM-DD HH:SS:MM") { return `${Y}${getD}${M}${getD}${D} ${h}${getT}${s}${getT}${m}` } } function dateReplenish(value) { // 日期小于两位数补充0; if (value < 10) { return "0" + value } else { return value } } /* 返回随机名字 */ function getMathName() { let nameList = "赵|钱|孙|李|周|吴|郑|王|冯|陈|楮|卫|蒋|沈|韩|杨|朱|秦|尤|许|何|吕|施|张|孔|曹|严|华|金|魏|陶|姜|戚|谢|邹|喻|柏|水|窦|章|云|苏|潘|葛|奚|范|彭|郎|鲁|韦|昌|马|苗|凤|花|方|俞|任|袁|柳|酆|鲍|史|唐|费|廉|岑|薛|雷|贺|倪|汤|滕|殷|罗|毕|郝|邬|安|常|乐|于|时|傅|皮|卞|齐|康|伍|余|元|卜|顾|孟|平|黄|和|穆|萧|尹|姚|邵|湛|汪|祁|毛|禹|狄|米|贝|明|臧|计|伏|成|戴|谈|宋|茅|庞|熊|纪|舒|屈|项|祝|董|梁|杜|阮|蓝|闽|席|季|麻|强|贾|路|娄|危|江|童|颜|郭|梅|盛|林|***|锺|徐|丘|骆|高|夏|蔡|田|樊|胡|凌|霍|虞|万|支|柯|昝|管|卢|莫|经|房|裘|缪|干|解|应|宗|丁|宣|贲|邓|郁|单|杭|洪|包|诸|左|石|崔|吉|钮|龚|程|嵇|邢|滑|裴|陆|荣|翁|荀|羊|於|惠|甄|麹|家|封|芮|羿|储|靳|汲|邴|糜|松|井|段|富|巫|乌|焦|巴|弓|牧|隗|山|谷|车|侯|宓|蓬|全|郗|班|仰|秋|仲|伊|宫|宁|仇|栾|暴|甘|斜|厉|戎|祖|武|符|刘|景|詹|束|龙|叶|幸|司|韶|郜|黎|蓟|薄|印|宿|白|怀|蒲|邰|从|鄂|索|咸|籍|赖|卓|蔺|屠|蒙|池|乔|阴|郁|胥|能|苍|双|闻|莘|党|翟|谭|贡|劳|逄|姬|申|扶|堵|冉|宰|郦|雍|郤|璩|桑|桂|濮|牛|寿|通|边|扈|燕|冀|郏|浦|尚|农|温|别|庄|晏|柴|瞿|阎|充|慕|连|茹|习|宦|艾|鱼|容|向|古|易|慎|戈|廖|庾|终|暨|居|衡|步|都|耿|满|弘|匡|国|文|寇|广|禄|阙|东|欧|殳|沃|利|蔚|越|夔|隆|师|巩|厍|聂|晁|勾|敖|融|冷|訾|辛|阚|那|简|饶|空|曾|毋|沙|乜|养|鞠|须|丰|巢|关|蒯|相|查|后|荆|红|游|竺|权|逑|盖|益|桓|公|万俟|司马|上官|欧阳|夏侯|诸葛|闻人|东方|赫连|皇甫|尉迟|公羊|澹台|公冶|宗政|濮阳|淳于|单于|太叔|申屠|公孙|仲孙|轩辕|令狐|锺离|宇文|长孙|慕容|鲜于|闾丘|司徒|司空|丌官|司寇|仉|督|子车|颛孙|端木|巫马|公西|漆雕|乐正|壤驷|公良|拓拔|夹谷|宰父|谷梁|晋|楚|阎|法|汝|鄢|涂|钦|段干|百里|东郭|南门|呼延|归|海|羊舌|微生|岳|帅|缑|亢|况|后|有|琴|梁丘|左丘|东门|西门|商|牟|佘|佴|伯|赏|南宫|墨|哈|谯|笪|年|爱|阳|佟|第五|言|福" nameList = nameList.split("|") let name = nameList[Math.floor(Math.random() * nameList.length)] var _rsl1 = ""; var _rsl2 = ""; var _randomUniCode1 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16); var _randomUniCode2 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16); eval("_rsl1=" + '"\\u' + _randomUniCode1 + '"'); eval("_rsl2=" + '"\\u' + _randomUniCode2 + '"'); if (Math.floor(Math.random() * 10) > 5) { return name + _rsl1 + _rsl2 } else { return name + _rsl1 } } /* 单个文字 */ function getMathChara() { var _rsl1 = ""; var _randomUniCode1 = Math.floor(Math.random() * (40870 - 19968) + 19968).toString(16); eval("_rsl1=" + '"\\u' + _randomUniCode1 + '"'); return _rsl1; } /* 返回一句话 */ /* 必须 getMathOneChara 传固定true [结尾状态 结尾是句号 ,不是结尾是逗号] max 默认值20 min 默认值10 一句话 */ function getMathOneChara(endingType, max, min) { let isgetMathOneChara = endingType ?? true; let setMax = max ?? 20; let setMin = min ?? 10; let length = Math.floor(Math.random() * (setMax - setMin) + setMin); let chara = "" for (let i = 0; i < length; i++) { chara = chara + getMathChara(); } if (isgetMathOneChara) { chara = chara + "。" } else { chara = chara + "," } return chara; } /* 随机多句话 /一句话[中文] 二次封装 */ /* OneChara false一句话/true多句话 max 默认 7 min 默认 3 多个 */ function getMathChin(OneChara, max, min) { let CharaBoor = OneChara ?? true; // 默认只有一句话 ,否则随机3-7句话 let setMin = min ?? 3; let setMax = max ?? 7; let CharaLength = 1 let chara = ""; if (CharaBoor) { //多句话 CharaLength = Math.floor(Math.random() * (setMax - setMin) + setMin); //随机句子长度 ; for (let i = 0; i < CharaLength; i++) { if (i == CharaLength - 1) { chara = chara + getMathOneChara(true); } else { chara = chara + getMathOneChara(false); } } } else { //一句话 chara = chara + getMathOneChara(true); } return chara; } /* 随机单词 */ /* initial 首字母是否大写 [true / false] max 单词最大长度 默认10 min 单词最短长度 默认3 */ function getRandomWord(initial, max, min) { let setMax = max ?? 10; let setMin = max ?? 3; let setInitial = !initial ?? true; //默认首字母是大写的 let lowerCaseLetter = "qwertyuiopasdfghjklzxcvb"; let capitalLetter = "QWERTYUIOPASDFGHJKLZXCVBNM"; let lowerCase = lowerCaseLetter.split(""); let capital = capitalLetter.split(""); let randomWordNumher = Math.floor(Math.random() * (setMax - setMin) + setMin); let getWord = "" if (setInitial) { // 首字母大写 for (let i = 0; i < randomWordNumher; i++) { if (i == 0) { getWord = getWord + capital[Math.floor(Math.random() * capital.length)] } else { getWord = getWord + lowerCase[Math.floor(Math.random() * lowerCase.length)] } } } else { // 首字母不大写 for (let i = 0; i < randomWordNumher; i++) { getWord = getWord + lowerCase[Math.floor(Math.random() * lowerCase.length)] } } return getWord; } /* 随机一句英文句子 */ /* max 默认 7 min 默认 3 */ function getRandomEnglish(endingType, max, min) { let ending = endingType ? endingType : false; let setMax = max ? max : 7; let setMin = min ? min : 3; let paragraphNumber = Math.floor(Math.random() * (setMax - setMin) + setMin); let paragraph = "" for (let i = 0; i < paragraphNumber; i++) { if (i == 0) { paragraph = paragraph + getRandomWord(true) + " " } else if (i == paragraphNumber - 1) { if (ending) { paragraph = paragraph + getRandomWord(false) + "." } else { paragraph = paragraph + getRandomWord(false) + "," } } else { paragraph = paragraph + getRandomWord(false) + " " } } return paragraph; } /* 返回多句英文 */ /* endingType min 默认值 3 max 默认值 7 */ function getRandomMultiEnglist(endingType, min, max) { let ending = endingType ? endingType : false let setMin = min ? min : 3; let setMax = max ? max : 7; let length = Math.floor(Math.random() * (setMax - setMin) + setMin) let paragraph = ""; for (let i = 0; i < length; i++) { if (i == length - 1) { paragraph = paragraph + getRandomEnglish(true) } else { paragraph = paragraph + getRandomEnglish(false) } } return paragraph; }
使用方法 [06 22 对设置多层数据进行调整]
let arr = { name: 'getMathName()', chack: 'getMathBoolean(1)', mathNumber: 'getMathNumber()', list : { title: 'getMathOneChara()', paragraph: 'getMathChin()', list2 : { mathcolor: 'getMathColor("rgb")', mathdate: 'getMathDate()', } } } let arrList = setMathData(arr,5) ; // 返回符合规范的多条数据 console.log(arrList)