第十一章 数组的操作

1.回顾练习

    <script>
        //var arr =[];
        var arr = new Array(5);
        var flag = true;
        for(var i=0;i<arr.length;i++){
            var num =Number(prompt("请输入第"+(i+1)+"个同学的成绩:",""));
            if(num<=100&&num>=0){
                arr[i]=num;
            }else{
                alert("输入有误\n请检查成绩是否在1--100以内");
                flag =false;
                break;
            }
        }
        if(flag){
            /*for(var i=0;i<5;i++){
                document.write("第"+(i+1)+"同学的成绩是:"+arr[i]+"分<br />");
            }*/
            for(var i in arr){
                document.write("第"+(Number(i)+1)+"同学的成绩是:"+arr[i]+"分<br />");
            }
        }
    </script>

 发现:在forEach遍历中,var i in 数组名  这个语句中的 i ,竟然是字符类型的?

2.数组数据查找

        输入5个学生的成绩,并储存到数组中;遍历数组找找分数是80分的,是第几个同学。(如果没有80分的,则提示没找到)

扩展:输入要查询的成绩进行查找

    <script>
        var arr =new Array(5);
        var count=0;
        for(var i =0;i<arr.length;i++){
            arr[i] = Number(prompt("请输入第"+(i+1)+"个同学的成绩:",""));
        }
        var num = Number(prompt("请输入要查询的成绩",""));
        for(var i in arr){
            if(arr[i]==num){
                document.write("第"+(Number(i)+1)+"个同学的成绩是"+num+"分<br />");
                count++;
            }
        }
        if(count==0){
            alert("对不起,没有查到"+num+"分的同学");
        }
    </script>

3.数组数据插入

已知某数组: var ary = [20,12,33,45,67];
现在要输入一个任意数据,插入到数组下标为2的位置上。

    <script>
        var arr = [20,12,33,45,67];
        for(var i in arr ){
            document.write(arr[i]+" ");
        }
        document.write("<br />");
        var n = Number(prompt("请输入插入数据的位置",""));
        var num = prompt("请输入插入的数据","");
        for(var i=arr.length;i>=n;i--){
            arr[i] = arr[i-1];
        }
        arr[n-1] = num;
        for(var i in arr){
            document.write(arr[i]+" ");
        }
    </script>

4.数组数据删除

    <script>
        var arr = [20,12,33,45,67];
        document.write("数组长度:"+arr.length+"<br />");
        for(var i in arr ){
            document.write(arr[i]+" ");
        }
        document.write("<br />");
        var n = Number(prompt("请输入删除数据的位置:",""));
        document.write("删除的数据位置"+n+"<br />");
        for(var i=n-1;i<arr.length;i++){
            if((typeof arr[i+1])=='undefined'){
                break;
            }
            arr[i]=arr[i+1];
        }
        arr.length-=1;
        for(var i in arr){
            document.write(arr[i]+" ");
        }
        document.write("<br />数组长度:"+arr.length);
    </script>

        要注意的是虽然不加if((typeof arr[i+1])=='undefined')去做判断并不会报错,但这种会溢出数组的行为并不合理。

5.、排序

        排序就是将数据由底到高,由高到低按照特定次序呈现。

        通过排序可以直接拿到特定的数据,提升数据的利用效率。

        排序的核心:比较和换位。

5.1冒泡排序

        两两相比小的前移。

    <script>
        var arr = [20,12,33,45,67,11,45,808,12,9,6,5,7,8];
        document.write("排序前的数组:"+arr);
        document.write("<br />");
        for(var i=0;i<arr.length-1;i++){
            for(var k = 0;k<arr.length-1-i;k++){
                if(arr[k]>arr[k+1]){
                    var num = arr[k];
                    arr[k] = arr[k+1];
                    arr[k+1]= num;
                    document.write(arr+"<br />")
                }
            }
        }
        
        document.write("排序后的数组:"+arr);
    </script>

5.2 选择排序

        依次将数组中相对最小的数(最大的数)交换到前面的位置。

    <script>
        var arr = [20,12,33,45,67,11,45,808,12,9,6,5,7,8];
        document.write("排序前的数组:"+arr);
        
        for(var i=0;i<arr.length;i++){
            var count = i;
            for(var k=i;k<arr.length;k++){
                if(arr[k]<arr[count]){
                    count = k;//记录小的数据的下标
                }
            }
            var temp = arr[i];
            arr[i] = arr[count];
            arr[count] = temp;
        }
        document.write("<br />排序后的数组:"+arr);
    </script>

6.数组的常用方法/函数

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值