zoukankan      html  css  js  c++  java
  • 数组

    数组对象的作用是:使用单独的变量名来存储一系列的值

     创建数组

    1: 常规方式:
    
    var myCars=new Array(); 
    myCars[0]="Saab";       
    myCars[1]="Volvo";
    myCars[2]="BMW";
    2: 简洁方式:
    
    var myCars=new Array("Saab","Volvo","BMW");
    3: 字面:
    
    var myCars=["Saab","Volvo","BMW"];
    合并数组 - concat()
    合并两个数组
    <script>
    var hege = ["Cecilie", "Lone"];
    var stale = ["Emil", "Tobias", "Linus"];
    var children = hege.concat(stale);
    document.write(children);
    </script>
    运行结果:Cecilie,Lone,Emil,Tobias,Linus
    
    合并三个数组
    <script>
    var parents = ["Jani", "Tove"];
    var brothers = ["Stale", "Kai Jim", "Borge"];
    var children = ["Cecilie", "Lone"];
    var family = parents.concat(brothers, children);
    document.write(family);
    运行结果:Jani,Tove,Stale,Kai Jim,Borge,Cecilie,Lone

    修改值:

    var mycars=["bmw","msld","vulk"];
    mycars[0]="mzd";
    console.log(mycars);

    删除值:

    var mycars=["bmw","msld","vulk"];
    delete mycars[0];
    console.log(mycars);

    从键盘接受10个整数,求出其中的最大值和最小值。

    <body>    
            <button onclick="fun()">求出其中的最大值和最小值</button>
            <script type="text/javascript">
                //从键盘接受10个整数,求出其中的最大值和最小值。
                /*方法1
                function fun(){
                var num1=Number(prompt('请输入第一个数'));
                var num2=Number(prompt('请输入第二个数'));
                var num3=Number(prompt('请输入第三个数'));
                var num4=Number(prompt('请输入第四个数'));
                var num5=Number(prompt('请输入第五个数'));
                var num6=Number(prompt('请输入第六个数'));
                var num7=Number(prompt('请输入第七个数'));
                var num8=Number(prompt('请输入第八个数'));
                var num9=Number(prompt('请输入第九个数'));
                var num10=Number(prompt('请输入第十个数'));
                var arr=[num1,num2,num3,num4,num5,num6,num7,num8,num9,num10];
                var max=arr[0],min=arr[0];
                for(var i=0;i<arr.length;i++){
                    if(arr[i]>max){
                        max=arr[i];
                    }            
                }
                for(var i=0; i<arr.length; i++){
                    if(min>arr[i]){
                        min = arr[i];
                    }            
                }            
                console.log(max);    
                console.log(min);    
                }*/
                //方法2.
                function fun(){
                    var arr=new Array(10);
                    for(var i=0;i<10;i++){
                        arr[i]=Number(prompt('请输入第'+(i+1)+'个数'));
                    }
                    document.write(arr+'<br />');
                    //冒泡排序法
                    for(var a=0;a<arr.length;a++){
                        for(var b=0;b<arr.length-a-1;b++){
                            if(arr[b]<arr[b+1]){
                                var c=arr[b+1];
                                arr[b+1]=arr[b];
                                arr[b]=c;
                            }
                        }
                    }
                    document.write(arr+'<br>');
                    document.write('最大值为'+arr[0]);
                    document.write('最小值为'+arr[9]);
                }
            </script>
        </body>

    输入10个数,保存在一个数组中,在数组中查找某个数字,给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”

    <body>
            <button onclick="fun()">查找某个数字</button>
            <script type="text/javascript">
                //输入10个数,保存在一个数组中,在数组中查找某个数字,
                //给出是否找到信息,如果找到了输出该数在数组中所处的位置,如果找不到输出“找不到”*/
                function fun(){
                    var arr=new Array(10);
                    for(var i=0;i<arr.length;i++){
                        arr[i]=Number(prompt('请输入第'+(i+1)+'个整数'));
                    }
                    var num=Number(prompt('请输入你要查找的数'));
                    /*循环中判断
                    for(var i=0;i<=arr.length;i++){
                        if(num==arr[i]){
                            console.log('这个数在数组中是'+(i+1)+'个位置');
                            break;
                        } else if(i==arr.length){
                        console.log('找不到这个数');
                        }
                    }
                }*/    
                //方法二:开关思想
                var flag=true;//(true找到了,false没找到)
                for(var i=0;i<arr.length;i++){
                    if(num==arr[i]){
                        flag=true;
                        break;
                    }else{
                        flag=false;
                    }
                }
                    if(flag){
                        console.log('这个数在数组中是'+(i+1)+'个位置');
                    }else{
                        console.log('找不到这个数');
                    }
                }
            </script>
        </body>

    将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换…..,例如:原数组为:9  2  5  7   8,逆序后的数组为:8   7   5  2  9

    <body>
            <button onclick="fun()">元素逆序输出</button>
            <script type="text/javascript">
                /*将一个数组中的元素逆序输出,即第一个元素和最后一个元素交换,第二个数与倒数第二元素交换…..,
                 * 例如:原数组为:9      2  5  7   8,逆序后的数组为:8   7   5  2  9*/
                function fun(){
                    var arr=new Array(8);
                    for(var i=0;i<arr.length;i++){
                        arr[i]=Number(prompt('请输入第'+(i+1)+'个整数'));
                    }
                    
                    //var arr = [9,2,5,7,8];
                    for (var i= arr.length-1;i>=0;i--){
                    console.log(arr[i]);
                    }    
                }
                        
            </script>
        </body>

    顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票

    <body>
            <button onclick="fun()">接受每件商品的价格</button>
            <script type="text/javascript">
                /*顾客从超市采购了10件商品,编写一个程序,用于接受每件商品的价格
                 * ,计算应付的总金额。并分别打印出各个商品的价格以及应付的总金额的小票。*/
                function fun(){
                    var arr=new Array(10);
                    for(var i=0;i<arr.length;i++){
                        arr[i]=Number(prompt('请输入第'+(i+1)+'件商品价格'));
                        console.log(arr[i])
                    }
                    for(var k=0,sum=0;k<arr.length;k++){
                        sum+=arr[k]
                    }
                    console.log('总金额'+sum)
                }
            </script>
        </body>

     编写一个程序,用于产生20个0-10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数

    <body>
            <button onclick="fun()">第六题</button>        
                //编写一个程序,用于产生20个0-10之间的随机数,将这20个随机数存入数组,并通过函数统计这些随机数中某个数出现的次数
                
            <script type="text/javascript">
                function fun(){
                    var arr=new Array(20);//产生20个0-10之间的随机数
                    for(var i=0;i<arr.length;i++){
                        arr[i]=parseInt(Math.random()*10);
                    }
                    console.log(arr);
                    var num=Number(prompt('请输入要统计次数的数字'));
                    var time=0;
                    for(var j=0;j<arr.length;j++){
                        if(num==arr[j]){
                            time++;
                        }
                    }
                    console.log(time);
                }
            </script>

     定义函数,去掉数组中重复元素

     1.循环从arr中取值,i从0,同时创建空数组result
                for(var i=0,result=[];i<arr.length;i++){
                    // 2. 循环遍历result,j从0
                    for(var j=0;j<result.length;j++){
                        // 3.如果result中当前元素等于arr中当前元素  arr中的这个数在新数组中已经存在
                        if(arr[i]==result[j]){
                            break;//退出循环
                        }
                    }// 遍历结束
                    // 如果j等于result的length  表示这个元素在新数组中不存在 
                    if(j==result.length){
                        // 将arr中当前元素,追加result末尾
                        result[result.length]=arr[i];
                    } 
                        
                }// 遍历结束
                return result;// 给出返回值
            }
            function testUnique(){
                var arr=[1,1,2,2,3,4,3,5,6];
                var result=unique(arr);
                console.log(result);
            }

    JS冒泡排序(依次比较相邻的两个值,如果后面的比前面的小,则将小的元素排到前面)

     动图演示:

    代码:

    <body>
            <button onclick="fun()">冒泡</button>
            <script type="text/javascript">
            function fun(){
                var arr=[2,5,9,3,7,6,4,1];
            
            //外层循环循环比较的轮数
            for (var i=1;i<arr.length;i++){
                //内层循环控制遍历每个元素的j
                for(var j=0;j<arr.length-1;j++){
                    //如果arr中的j的位置的值>j+1位置的值
                    //交换arr中j位置和j+1位置的值;
                    if(arr[j]>arr[j+1]){
                    var temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                        }
                    }
                }
            console.log(arr)
            }                                                            
            </script>
     </body>

     二维数组

    1.二维数组的本质:数组中的元素又是数组,数组中的元素又引用了另一个子数组

    var data=[
                //0,1,2,3
                 [0,0,0,0],//0
                 [0,0,0,0],//1
                 [0,0,0,0],//2
                 [0,0,0,0]//3
             ];
             //访问 arr[r][c]        
    小例子:
    var arr = [[1,2],['a','b']];
    console.log(arr[1][0]); 
    //输出a 第2列第1行所在的元素

    遍历

    var arr = new Array();         //先声明一维
           for(var i=0;i<5;i++){          //一维长度为5
              arr[i]=new Array(i);    //在声明二维
              for(var j=0;j<5;j++){      //二维长度为5
                 arr[i][j]=i;
           }
    } <br>然后,遍历二维数组arr
    for(var i=0;i<arr.length;i++){
        for(var j=0;j<arr[i].length;j++){
            document.write(arr[i][j]);
        }
        document.write("<br/>");  
    }
    结果:
      
    题目一:
    <button onclick="fun()">计算每一组的平均值、总和</button>
            <script type="text/javascript">
            //创建一个可以存放四组数据的二维数组,循环随机录入数据,计算每一组的平均值、总和
            function fun(){
                var arr=new Array(4);
                var arr2=new Array(4);
                var arr=[
                         //0,1,2,3,
                         [0,0,0,0,],//0
                         [0,0,0,0,],//1
                         [0,0,0,0,],//2
                         [0,0,0,0,],//3
                     ];
                    for(var i=0;i<arr.length;i++){
                         var sum=0;
                        for (var j=0;j<=arr2.length-1;j++){
                            arr2[j]=Number(prompt('请输入第'+(i+1)+'组的第'+(j+1)+'个数'));
                            var sum=sum+arr2[j];
                            var pin=sum/arr2.length;
                            
                        }
                        document.write('和为;'+sum);
                        document.write('平均值为;'+pin);
                
                    }
                    
                
            }
            </script>

     题目二

    <button onclick="fun()">按钮</button>
            <script>
            /*接收并输出某公司某月的考勤和扣款信息,假设公司有5个员工,每个员工的考勤项有上下班忘打卡、
             *迟到、早退、旷工,其中上下班忘打卡扣款10元/次,迟到和早退扣款为20元/次,旷工100元/天  (使用二维数组)
            循环接收输入员工的编号、忘记打卡次数、迟到次数、早退次数、旷工次数,在网页中输出5个员工的考勤信息*/
            function fun(){
                 var arr=[
                         //0,1,2,3,4
                         [0,0,0,0,0],//0
                         [0,0,0,0,0],//1
                         [0,0,0,0,0],//2
                         [0,0,0,0,0],//3
                         [0,0,0,0,0]//4
                     ];//5*5二维数组
                for(var r=0;r<arr.length;r++){
                    for(var j=0;j<arr[r].length;j++){
                        var n1,n2,n3,n4,n5,n6;
                        switch(j){
                            case 0:
                            var n1=arr[r][j]=Number(prompt("请输入编号:"));
                            break;
                            case 1:
                            var n2=arr[r][j]=Number(prompt("请输入忘记打卡次数:"));                        
                            break;
                            case 2:
                            var n3=arr[r][j]=Number(prompt("请输入迟到次数:"));                       
                            break;
                            case 3:
                            var n4=arr[r][j]=Number(prompt("请输入早退次数:"));                       
                            break;
                            case 4:
                            var n5=arr[r][j]=Number(prompt("请输入旷工次数:"));                        
                            break;
                              case 5:
                              var n6=arr[r][j]=Number(prompt("请输入扣款总数:"));                        
                              break;                                                                                                                        
                            }                                                                           
                    }
                    document.write('编号为'+n1+'的第'+(r+1)+'位员工考勤如下:忘记打卡次数为'+n2+'次,迟到次数为'+n3+'次,早退次数为'+n4+'次,旷工次数为'+n5+'次,扣款总金额为'+(n2*10+n3*20+n4*20+n5*100)+'元'+"<br/>")
            }
                                       
            }
            
            </script>

     题目三

    一家贸易公司有四位销售员,每位销售员负责销售四件商品,编写一个函数,--一个4*4的二维数组
    
            接收每名销售员销售的各类产品的数量。--- 二维数组的循环赋值
            打印产品销售明细表,--循环读取二维数组的数据
            明细表包括每类产品的销售总数,-- cSum 求二维数组中每一列的和
            以及每位销售员销售的产品数量  --- rSum  求 二维数组每一行的和
            占总销售的 --- sum 求二维数组所元素累加的和
            百分比。      ---  =rSum/sum
            使用以下公式:
            销售员N销售的产品A的百分比=(销售员N售出的产品A的销售量/总销售量)*100    arr[r][c]/sum  *100
            总销售量指各类产品销售量的总和(使用二维数组)
         -->
         <script>
             fun()
             function fun(){
                 var arr=[
                         //0,1,2,3
                         [0,0,0,0],//0
                         [0,0,0,0],//1
                         [0,0,0,0],//2
                         [0,0,0,0]//3
                     ];//4*4二维数组
                 //循环接收每位销售员销售产品的数量
                 for(var r=0;r<arr.length;r++){
                     for(var c=0;c<arr[r].length;c++){
                         arr[r][c]=Number(prompt("请输入第"+(r+1)+"销售员,第"+(c+1)+"类产品的销售数量:"));
    
                     }
                 }
             // debugger;
             /*
                1 2 3 4
                4 3 2 1
                1 2 3 4
                4 3 2 1
             */
                 var typeSum=[0,0,0,0];//用来接收每一类销售的总额
                 var rSum=[0,0,0,0];//每一个销售人员的数量总和
                 //以上两个数据可以设置为一二维数组
                 var allSum=0;//全公司的销售总和
                 for(var r=0;r<arr.length;r++){
                     for(var c=0;c<arr[r].length;c++){
                         //计算每一类的销售总额和
                         typeSum[c]+=arr[r][c];
                         //计算每一个行的和
                         rSum[r]+=arr[r][c];
                         //产品的总销售和
                         allSum+=arr[r][c];
    
                     }
                     console.log(typeSum);
                 }
                 //计算销售占比
                 var perArr=[];
                 for(var r=0;r<arr.length;r++){
                     perArr[r]=new Array(arr.length);
                     for(var c=0;c<arr[r].length;c++){
                         perArr[r][c]= paresInt((arr[r][c]/allSum)*100);
                     }
                 }
                 console.log(perArr)
             }
  • 相关阅读:
    1069.查找学生信息
    1023.Excel排序
    1061.成绩排序
    bzoj 1113
    bzoj 1112 treap树
    bzoj 1225 dfs + 一点点数论
    bzoj 1224
    UESTC
    HDU 3530 单调队列
    bzoj 1233
  • 原文地址:https://www.cnblogs.com/conlover/p/10875358.html
Copyright © 2011-2022 走看看