js实现按座位号抽奖
最近一个项目需要实现一个按座位号抽奖的效果,抽奖现场有多个区域,抽奖时随机选取其中一个区域,再在这个区域中随机选取一排,最后在这排中随机选取一个座位号,区域、排号及座位号都不固定。
实现思路如下:
1 <!DOCTYPE html> 2 <html lang="zh-CN"> 3 <head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <title>抽奖</title> 7 </head> 8 <body> 9 <p id="result"></p> 10 <script> 11 // 获取两个数之间的随机数 12 function getRandom(min, max){ 13 var num = min + Math.floor(Math.random() * (max - min + 1)); 14 return num; 15 } 16 17 // 列举可以参加抽奖的座位号(第几区,第几排,第几列) 18 var obj = { 19 '001': [ 20 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 21 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 22 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 23 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 24 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 25 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 26 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 27 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 28 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11] 29 ], 30 '002': [ 31 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 32 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 33 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 34 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 35 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 36 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 37 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 38 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 39 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16] 40 ], 41 '003': [ 42 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 43 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 44 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], 45 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 46 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 47 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 48 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], 49 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 50 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] 51 ], 52 '004': [ 53 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 54 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 55 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 56 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 57 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 58 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 59 ], 60 '006': [ 61 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 62 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 63 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], 64 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 65 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], 66 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 67 ], 68 '007': [ 69 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], 70 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17], 71 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18], 72 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19], 73 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], 74 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], 75 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 76 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20], 77 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] 78 ], 79 '008': [ 80 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 81 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 82 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 83 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 84 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 85 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 86 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 87 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23], 88 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21] 89 ], 90 '009': [ 91 [1, 2, 3, 4, 5], 92 [1, 2, 3, 4, 5], 93 [1, 2, 3, 4, 5], 94 [1, 2, 3, 4, 5], 95 [1, 2, 3, 4, 5], 96 [1, 2, 3, 4, 5], 97 [1, 2, 3, 4, 5], 98 [1, 2, 3, 4, 5], 99 [1, 2, 3, 4], 100 ], 101 'vip1': [ 102 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 103 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 104 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 105 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38] 106 ], 107 'vip2': [ 108 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 109 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 110 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 111 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38] 112 ], 113 'vip3': [ 114 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 115 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 116 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38], 117 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38] 118 ] 119 }; 120 121 // 从对象中随机获取一个区域(索引) 122 var getAreaRandomIndex = getRandom(0, Object.keys(obj).length - 1); 123 // 再在上面得到的区域中再随机获取第几排(索引) 124 var getRowsRandomIndex = getRandom(0, obj[Object.keys(obj)[getAreaRandomIndex]].length - 1); 125 // 最后在上面得到的第几排中再随机获取第几号(索引) 126 var getcolsRandomIndex = getRandom(0, obj[Object.keys(obj)[getAreaRandomIndex]][getRowsRandomIndex].length -1); 127 128 // ----- 通过上面索引得到确切的座位号 ----- 129 // 得到第几区 130 var area = Object.keys(obj)[getAreaRandomIndex]; 131 // 得到第几排 132 var rows = getRowsRandomIndex + 1; 133 // 得到第几列 134 var cols = obj[Object.keys(obj)[getAreaRandomIndex]][getRowsRandomIndex][getcolsRandomIndex]; 135 136 // 将结果显示在页面上 137 document.getElementById('result').innerHTML = '第' + area + '区, 第' + rows + '排, 第' + cols + '号'; 138 139 </script> 140 </body> 141 </html>