<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS生成随机数</title>
<style type="text/css">
h1 { text-align: center; }
section{ margin: auto; width: 600px; padding: 50px;}
h2 { font-size: 36px; display: flex; }
p { text-align: center; }
</style>
</head>
<body>
<h1>JS生成随机数</h1>
<hr />
<section>
<h2><b>0-9不去重</b><p id="conA"></p></h2>
<h2><b>0-9已去重</b><p id="conB"></p></h2>
<h2><b>0-9去重去逗号</b><p id="conC"></p></h2>
</section>
</body>
<script type="text/javascript">
setTimeout(function () { window.location.reload(); }, 1000);//每隔1秒刷新1次页面
//Math.round() 把一个数字舍入为最接近的整数。
//math.random()取得某个范围内的随机数
var Arr = [] || new Array();
var mupiao;
Arr[0] = Math.round((Math.random()) * 9); //输出的值的范围值
for (var i = 1; i < 10; i++) //输出的个数(这里是10个数)
{
mupiao = Math.round((Math.random()) * 9);
for (var a = 0; a < Arr.length; a++) {
while (Arr[a] == mupiao) {
mupiao = Math.round((Math.random()) * 9);
}
}
Arr[a] = mupiao;
}
//用js对象的特性,如何去重复:
//第一步:把数组转成一个js对象。
//第二步:把数组中的值,变成js对象中的 key。
//第三步:把这个对象 再还原成数组。
//该方法把 组数 转为 对象
var toObject = function (arr) {
var obj = {} //创建一个私有(在函数中)的对象
for (var i = 0; i < arr.length; i++) {
obj[arr[i]] = true; //这样就把数组转为对象了(就是把循环出来的数组 放到 对象中)
}
return obj;
}
//该方法把 对象 转为 数组
var keys = function (obj) {
var arr = []; //创建一个私有(在函数中)的数组
for (var i in obj) {
if (obj.hasOwnProperty(i)) //判断这个属性是否属于obj的,注hasOwnProperty是js对象中的方法
{
arr.push(i);//把循环出来的对象追加到数组中
}
}
return arr;
}
//合并方法,去除数组中的重复项
var uniq = function (arrs) {
return keys(toObject(arrs));//把数arrs放到toObject方法中,然后在把toObject方法入到keys方法中并返回,就OK了。
}
document.getElementById('conA').innerHTML = Arr;//这是原来的随机数组
document.getElementById('conB').innerHTML = uniq(Arr); //这是去重复后的随机数组
document.getElementById('conC').innerHTML = uniq(Arr).join(''); //这是去重复去逗号后的随机数组
</script>
</html>