zoukankan      html  css  js  c++  java
  • JS数组练习

    1.输入10个成绩,求总分,最高分,最低分

    <script type="text/javascript">
    var arr = new Array(80,70,86,58,90,35,89,67,50,99);
        var sum = 0;
        var maxd = 0;
        var mind = 100;
        for(var i=0;i<arr.length;i++){
            sum = sum +arr[i];
            if(arr[i]>maxd){
                maxd = arr[i];
            }
            if(arr[i]<mind){
                mind = arr[i];
            }
        }
        alert(sum);
        alert(maxd);
        alert(mind);
    </script>

    这个题的解题思路就是先设定好一个最大值和最小值,然后让我们的变量arr[i]分别和最大值、最小值作比较,然乎通过转换赋值的形式来得到我们想要得到的最大和最小值

    2.往数组里面添加数据的时候去重

    方法一(比较笨重,但是粗俗易懂):

    <script type="text/javascript">
        var a = prompt("请输入一个数字:");
        var arr = new Array(1,2,3,4,5);
     
        var z = 0;
        for(var i=0;i<arr.length;i++){
            if(a == arr[i]){
                z = 1;
                break;
            }
        }
        
        if(z==0){
            arr.push(a);
        }else{
            alert("该数据在数组里面已存在!");
        }
    </script>

    当输入9的时候没有弹出提示框,说明9已经添加进这个数组中

    方法二.运用   var.indexof()

    <script type="text/javascript">
        var a = parseInt(prompt("请输入一个数字:"));---------------------在这里一定要注意,要把字符串转换成整数
        var arr = new Array(1,2,3,4,5);
        
        alert(arr.indexOf(a));    //判断数据是否在数组里面存在,如果要检索的字符串值没有出现,则该方法返回 -1;另外indexOf() 方法对大小写敏感!Of的O为大写!
    </script>

    在对话框输入一个值(这个值在数组中),那么指示框弹出的的是这个值的索引

    在对话框输入一个值(这个值不在数组中),那么指示框弹出的的是这个值的索引就为-1

    3.冒泡排序(比如从大到小排序)【*要重点学习一下】

    我们拿个表格先来分析一下这个数组:

    <script type="text/javascript">
       var arr = new Array(70,34,60,49,20,59,98,100);
        
        var zj = 0;//中间变量
        
        //第一次for用来控制比较的轮数,i代表轮次
        for(var i=1;i<arr.length;i++){
            //控制每轮比较几次的
            for(var j=0;j<arr.length-i;j++){
                if(arr[j]<arr[j+1]){
                    //实现交换
                    zj = arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=zj;
                }
            }
        }
        alert(arr[0]);
    </script>

    验证一下其他数据是否正确

    <script type="text/javascript">
       var arr = new Array(70,34,60,49,20,59,98,100);
       var zj = 0;
       for(var i=1;i<arr.length;i++){
           for(var j=0;j<arr.length-i;j++){
               if(arr[j]<arr[j+1]){
                  zj = arr[j];
                  arr[j]=arr[j+1];
                  arr[j+1]=zj;
                }
            }
        }
        alert(arr[2]);
    </script>

    4.在数组里面查找数据,找到数据所在位置的索引

    方法一:

    <script type="text/javascript">
        var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        alert(arr.indexOf(a));
    </script>

    方法二:

    <script type="text/javascript">
        var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        for(var i=0;i<arr.length;i++){
            if(a==arr[i]){
                alert(i);
            }
        }
    </script>

    方法三:二分法查找数据(数据是海量的话,我们得学会用能用二分法),但是要求数组必须是排好序的

    <script type="text/javascript">
            var arr = new Array(1,2,3,4,5,6,7,8,9,10);
        var a = 6;
        
        var minx = 0;
        var maxx = arr.length-1;
    
        while(true){
            var zjx = parseInt((minx+maxx)/2);
            if(zjx==minx){
                if(a==arr[zjx+1]){
                    alert(zjx+1);
                    break;
                }
            }
        
            if(a==arr[zjx]){
                alert(zjx);
                break;
            }else if(a>arr[zjx]){
                minx = zjx;
            }else{
                maxx = zjx;
            }
            
        }
        
    </script>

     二分法原理:折半查找,每次看做把表分成两半,因为已经排序,所以只需要和中间数比较就能确定是在哪一半,然后不断分成两半,直到匹配。可以运用二分法来完成海量数据的检索。比如var arr=new Array (1,2,3,4,5,6,7,8,9);这组数组,最小的索引是0,最大的索引是8。把最大和最小索引取个平均值,索引是4,分成的2组数组就是0-4和5-8。看中间的索引,对应的元素是5,而目标值是6>5,索引0-4的数组就不需要考虑了,值考虑索引为5-8的数组。再取索引为5-8的平均值为6(取整数),数组的索引又分成了5-6和7-8。索引6对应的元素是7,目标值是6<7,所以索引7-8的数组就不需要考虑了。以此类推逐步减小目标值的范围,找出目标值的索引。

  • 相关阅读:
    SQL(二)语法
    SQL(一)简介
    linux学习(六)文件基本属性
    Linux学习(五)远程登录
    Linux学习(四) 忘记密码解决方法
    怎样理解阻塞非阻塞与同步异步的区别?
    Python的lambda匿名函数
    Twisted源码分析系列01-reactor
    Python装饰器学习(九步入门)
    Python关键字yield的解释
  • 原文地址:https://www.cnblogs.com/sutao/p/7026727.html
Copyright © 2011-2022 走看看