帮我解决一下
使用random()随机取得0-10之间的数值。使用round()对数值进行四舍五入。 如果我想抽随机10个数,但又不重复怎么搞?
使用random()随机取得0-10之间的数值。使用round()对数值进行四舍五入。 如果我想抽随机10个数,但又不重复怎么搞?
2016-07-29
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS随机数</title>
<style type="text/css">
h1{text-align: center;}
p{ text-align: center; font-size: 36px;}
</style>
</head>
<body>
<h1>JS随机数</h1><hr />
<p id="conA"></p>
<p id="conB"></p>
</body>
<script type="text/javascript">
setTimeout(function(){ window.location.reload();},1000);//每隔1秒刷新1次页面
//Math.round() 把一个数字舍入为最接近的整数。
//math.random()取得某个范围内的随机数
var Array = [] || new Array();
var mupiao;
Array[0] = Math.round((Math.random()) * 10); //输出的值的范围
for(var i = 1; i < 10; i++) //输出的个数(这里是10个数)
{
mupiao = Math.round((Math.random()) * 10);
for(var a = 0; a < Array.length; a++)
{
while(Array[a] == mupiao)
{
mupiao = Math.round((Math.random()) * 10);
}
}
Array[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 = Array;//这是原来的随机数组
document.getElementById('conB').innerHTML = uniq(Array); //这是去重复后的随机数组
</script>
</html>
举报