页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <!-- 创建三个输入框和三个按钮 -->
    <!-- 前面两个输入框进行数字的输入,随机输入的数值,其实没有大小的硬性要求,在下面封装的随机数值中都可以得到想要的数值. -->
    max: <input type="text" name="" id="txt1">   
    min: <input type="text" name="" id="txt2">
    num: <input type="text" name="" id="txt3">
    <input type="button" name="" id="btn1" value="生成">
    <input type="button" name="" id="btn2" value="排序">
    <input type="button" name="" id="btn3" value="去重">

    
</body>
<script>
// 页面上有3个输入框:分别为max,min,num;三个按钮:分别为生成,排序,去重;
// 在输入框输入三个数字后,先点击生成按钮,生成一个数组长度为num,值为max到min之间的随机整数;点击排序,对当前数组进行排序,点击去重,对当前数组进行去重。
// 每次点击之后使结果显示在控制台

    //先对输入框声明变量   
    var oTxt1=document.getElementById("txt1");
    var oTxt2=document.getElementById("txt2"); 
    var oTxt3=document.getElementById("txt3");
    var oBtn1=document.getElementById("btn1");
    var oBtn2=document.getElementById("btn2");
    var oBtn3=document.getElementById("btn3");
    //生成长度为num的数组  
    oBtn1.onclick=function(){
        var oMax=oTxt1.value;   //在这里我们要注意千万不要把这里的变量写在函数的外部,
        var oMin=oTxt2.value;   //那样虽然不会报错但是也显示不出结果
        var oNum=oTxt3.value;
        var arr=new Array(oNum);
    for(var i=0;i<oNum;i++){
        arr[i]=fun(oMax,oMin);
        }console.log(arr);

        // 在这边是我们需要封装的函数,封装好的函数可以方便我们以后需要使用的时候可以直接提用
        // 函数的封装就是为了能够选择使用,重复使用,忽略细节,简单一句就是为了方便
        // 范围随机数   
        function fun(max,min){
        return Math.round(Math.random()*(max-min)+min);//在这了其实max和min的顺序调换了也没事
    }

         //数组的排序
          //数组的排序最重要的一点就是要遍历,在这里我用到的是数组的冒泡排序,还有很多的方法可以,这就需要我们自己去增加自己的练习了。
    oBtn2.onclick= function(){
        for(var i=0; i<arr.length;i++){        
            for(var j=0; j<arr.length-i;j++){
                if (arr[j]>arr[j+1]) {
                    var ls=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=ls;
                }
            }
        }
        console.log(arr);
    }

     //去重 
     //这边去重我运用的方法是,在数组的内部提取一个元素然后进行一一比较,如果相同那就删除。不过这边要记住一个遇到的一个BUG,如果遇到两个连续的相同的元素,就可能导致后一位的现铜元素被跳过,所以在这里我们要J--,让循环一次之后将比照的元素在往前进一位,这样子就不会有这个BUG出现了。
    oBtn3.onclick= function (){
        for(var i=0;i<arr.length;i++){
            for(var j=i+1; j<arr.length; j++){
                if (arr[i]==arr[j]) {
                arr.splice(j,1);
                j--;
                }
            }

        }
        console.log(arr);
    } 
    }
</script>
</html>

 

posted @ 2019-08-22 19:02  托尔带盐人  阅读(423)  评论(0编辑  收藏  举报