JavaScript_day07------>今天的主要内容包括数组;arguments;数组的遍历等,以及冒泡排序和选择排序;push封装,pop封装

1.arguments

        // console.log(1);

        // console.log(1,2);

        // console.log(1,2,3);

        // function sum(a,b) {  
        //     return a + b
        // }

        // console.log(sum(1,2,3,4));

        
        // 一般情况下,使用形参来接受实参的值

        // 话可以使用arguments来接受实参

        function log() {  
            // 伪数组 / 类数组
            console.log(arguments);
            console.log(arguments[0]);
            console.log(arguments[1]);
            // console.log(arguments[2]);
            console.log(arguments.length);
        }
        log(1,2)

2.数组

        // var a = 1 ;
        // var b = 3 ;
        // var c = 5 ;
        // var d = 2 ;
        // 数组:存储一组相同数据类型的数据
        var arr = [1,3,5,,2] ;
        console.log(arr);

        // 数组下标  访问数组的值的方法:arr[index]
        console.log(arr[0]);

        // 数组的长度
        console.log(arr.length);

        console.log(arr[3]);

        // var arr = ['a' , 'b' , 'c'] ;


        // var arr = [1,2,'a','b',true] ;  // 不太规范

3.数组的长度

        var arr = [1,2,3] ;

        console.log(arr[10]);  // undefined

        // [1,2,3,,,,,,,20]
        // 实际上变相的加长了数组的长度
        arr[10] = 20 ;

        console.log(arr[10]);

        console.log(arr.length);  // 11 

        console.log(arr);

4.数组的声明

         var arr = [1,2,3]    // 字面量声明


         //数组是一个对象

         var arr = new Array(1,2,3) ;  // 实例化一个对象  Array构造函数(用于创建对象的)


         console.log(arr.length);


         console.log(arr);


         var a = 1 ;    // 字面量声明



         var b = new Number(2) ;   // 实例化一个对象


         console.log(a);

         console.log(b);



         var c = 'hello' ;

         var d = new String('hello') ;


         // 当Array只有一个参数的时候,表示数组的长度

         var arr2 = new Array(10) ;

         console.log(arr2);
        // 声明一个空数组,向数组中追加值
        var arr = [] ;
        arr[0] = 'a' ;
        arr[1] = 'b' ;
        arr[2] = 'c' ;
        arr[10] = 'f' ;

5.生成十个随机数存入数组

        // 取不到max
        function rand(min , max) {
            return parseInt(Math.random() * (max - min) + min)
        }

        // 生成10个数,存入数组
        //    生一个,存一个

        // 创建一个空数组
        var arr = [] ;
        for(var i = 0 ; i < 10 ; i++) {
            // arr[i] = rand(0,100) ;
            arr[arr.length] = rand(0,100);
        }
        console.log(arr);

6.数组的遍历

        数组的遍历

                for           正常循环遍历

                for in         遍历下标   主要是用于遍历对象(不适合数组)

                for  of        遍历值

        // 遍历:读取数组中的每一个值

        var arr = [1,2,3,4,,,,5] ;
        // console.log(arr[0]);
        // console.log(arr[1]);
        // console.log(arr[2]);


        // 循环遍历
        // for(var i = 0 ; i < arr.length ; i++) {
        //     console.log(arr[i]);
        // }

        // for in  用于遍历对象的角标 -- bug(自动过滤掉空值)
        // for(var i in arr) {
        //     console.log(arr[i]);
        // }

        // for of 遍历对象 的值
        for(var v of arr) {
            console.log(v);
        }

7.存入10个数,求平均数

        // 取不到max
        function rand(min , max) {
            return parseInt(Math.random() * (max - min) + min)
        }
        var arr = [] ;
        // 抓10个数字,放进数组
        // var n1 = rand(0,100) ;
        // arr[0] = n1 ;

        // var n2 = rand(0,100) ;
        // arr[1] = n2 ;

        // var n1 = rand(0,100) ;
        // arr[2] = n1 ;

        // var n1 = rand(0,100) ;
        // arr[3] = n1 ;

        // for(var i = 0 ; i < 10 ; i++) {
        //     // var n = rand(0,100) ;
        //     // arr[i] = n ;
        //     arr[i] = rand(0,100);
        // }
        // console.log(arr);


        // 1-100存入数组
        // var arr = [1,2,3,4,5,6,7.....]
        var arr = [] ;
        // arr[0] = 1 ;
        // arr[1] = 2 ;
        // ... 

        for(var i = 0 ; i < 100 ; i++) {
            arr[i] = i + 1 ;
        }

        console.log(arr);

        // 把数组中所有的数求和  
        var sum = 0 ;
        // 遍历数组
        for(var i in arr) {
            sum += arr[i]
        }
        var res = sum / arr.length ;
        console.log(res);

8.数组随机取值

         封装函数:求数组中的平均数

                   参数,返回值

        function averageArr(arr) {  
            // 数组中的所有数求和
            var sum = 0 ;
            // 遍历数组
            for(var v of arr) {
                sum += v
            }
            // 求平均数
            return sum / arr.length
        }


        var arr = [] ;
        for(var i = 0 ; i < 10 ; i++) {
            // var n = rand(0,100) ;
            // arr[i] = n;
            // 每次赋值之后,数组的长度都会发生改变
            arr[arr.length] = rand(0,100) ;
        }
        console.log(arr);
        var res = averageArr(arr) ;
        console.log(res);
        // 从数组中随机取一个值
        function randOneArr(arr) {  
            // 取值是通过下角标取的
            //    随机取值 -> 随机下标 -> 0-length
            var i = rand(0,arr.length) ;
            return arr[i]
        }

        var res = randOneArr([1,2,3,4,5,11,7,8,8,9])
        console.log(res);

9.随机验证码

        var arr = ['a','b','c','d','e','f','A','B','C','E','1','2','3','4'];


        var res = '' ;
        for(var i = 0 ; i < 4 ; i++) {
            // var j = rand(0,arr.length) ;
            // var v = arr[j] ;
            // res += v;
            res += arr[rand(0,arr.length)] ;
        }
        console.log(res);

10.找到数组中最大的值

        找到数组中的最大值

          一一比较

          假设第一个值最大

         9 8 6 3 1

        假设第一个值最大  max = 9 ;

         9  8 比较  9

        // 假设第一个值最大
        var max = arr[0] ;
        // 拿他和后面的所有数比较
        for(var i = 1 ; i < arr.length ; i++) {
            // 如果这个数比后面的数要小
            if(max < arr[i]) {
                // max 只存储最大的那个数
                max = arr[i]
            }
        }
        console.log(max);

        将它封装起来

        function maxArr(arr) {  
            // var arr = [6,3,2,11 , 34,8] ;

            // 假设第一个值最大
            var max = arr[0] ;
            // 拿他和后面的所有数比较
            for(var i = 1 ; i < arr.length ; i++) {
                // 如果这个数比后面的数要小
                if(max < arr[i]) {
                    // max 只存储最大的那个数
                    max = arr[i]
                }
            }
            console.log(max);
            return max
        }

11.找到数组中是否存在某个数

         找到数组中是否存在某个值

           把要找的这个值与数组中的每一个值作比较

        var arr = [1,2,3,4,5] ;

        // 因为找到他存在的证据很容易
        var flag = false ;

        // 遍历数组
        for(var v of arr) {
            if(22 === v) {
                // alert('存在')
                flag = true ; 
            }
        }
        // 比较结束以后,才能说找不到
        alert(flag)

        封装起来

        function includes(arr , n) {  

            // 因为找到他存在的证据很容易
            // var flag = false ;

            // 遍历数组
            for(var v of arr) {
                if(n === v) {
                    // alert('存在')
                    // flag = true ; 
                    // 如果已经找到了就不需要继续找
                    // break ;
                    return true
                }
            }
            // 比较结束以后,才能说找不到
            // return flag
            return false 
        }


        var res = includes([1,2,3,4] , 12)
        console.log(res);

12.数组拼接成字符串

         把数组中的值拼接成字符串 [1,2,3,4]  ->  1,2,3,4

         思路:把数组中的每一个值拼接到字符串中

        var arr = [1,2,3,4];
        var res = '' ;
        // for(var i in arr) {
        //     // 最后一个不加逗号
        //     console.log(i);   // for in 一般用于遍历对象,字符串
        //     if(i == arr.length - 1) {
        //         res += arr[i]
        //     } else {
        //         res += arr[i] + ','
        //     }
        // }

        // 一般,数组的遍历直接使用for循环
        // for(var i = 0 ; i < arr.length ; i++) {
        //     // 最后一个不加逗号
        //     console.log(i);   // 字符串
        //     res += i < arr.length - 1 ? arr[i] + ',' : arr[i]
        // }
        // console.log(res);


        function join(arr , f) {  
            for(var i = 0 ; i < arr.length ; i++) {
                // 最后一个不加逗号
                // console.log(i);   // 字符串
                res += i < arr.length - 1 ? arr[i] + f : arr[i]
            }
            console.log(res);
            return res
        }

        
        join([1,2,3,4] , '')

13.冒泡排序

        // 数组中的值从小到大排序
        var arr = [8,5,3,2,1] ; 

        // 思路
        // 第一轮  拿到最大值放在最后面
        // 8 5   5 8 3 2 1
        // 8 3   5 3 8 2 1
        // 8 2   5 3 2 8 1
        // 8 1   5 3 2 1 8

        // 第二轮  拿到第二大的值放在倒数第二个
        // 5 3   3 5 2 1 8
        // 5 2   3 2 5 1 8
        // 5 1   3 2 1 5 8
        // 5 8   3 2 1 5 8   多余的一次


        // 第三轮
        // 3 2   2 3 1 5 8
        // 3 1   2 1 3 5 8
        // 3 5               多余两次
        // 5 8


        // 第四轮
        // 2 1   1 2 3 5 8
        // 2 3                多余三次
        // 3 5
        // 5 8


        // 比较的轮数
        
        for(var j = 0 ; j < arr.length - 1 ; j++) {
            // 每两个相邻的值做比较
            for(var i = 0 ; i < arr.length - 1 - j ; i++) {
                // 前面的比后面的大,就交换
                if(arr[i] > arr[i + 1]) {
                    var t = arr[i] ;
                    arr[i] = arr[i + 1] ;
                    arr[i + 1] = t ;
                }
            }
            // 每一轮拿到一次最大值
            console.log(arr);
        }

        console.log(arr);

14.选择排序

        var arr = [8,5,3,2,1] ;
        

        // 第一轮
        // 先找到最小值,再和第一个位置进行交换
        
        // 假设第一个位置上的数最小
        var min = 0 ;
        // 拿第一个位置上的数与后面的所有值作比较
        for(var i = 1 ; i < arr.length ; i++) {
            if(arr[min] > arr[i]) {
                min = i ;
            }
        }
        console.log(min);

        // 拿到最小值以后,与第一个位置上的值交换
        var t = arr[0] ;
        arr[0] = arr[min] ;
        arr[min] = t ;

        // 1 5 3 2 8


        // 第二轮
        //  假设第二个位置上的数最小
        var min = 1 ;
        for(var i = 2 ; i < arr.length ; i++) {
            if(arr[min] > arr[i]) {
                min = i 
            }
        }
        console.log(min);
        // 拿到最小值以后,与第一个位置上的值交换
        var t = arr[1] ;
        arr[1] = arr[min] ;
        arr[min] = t ;


        // 1 2 3 5 8


        // 第三轮
        //   假设第三个位置上的数最小



        // 第四轮


        var arr = [1,4,2,7,3,6];


        for(var i = 0 ; i < arr.length - 1 ; i++) {
            // 假设第i个位置上的数是最小的
            var min = i ;
            // 拿这个最小的值和后面所有的数进行比较
            for(var j = i + 1 ; j < arr.length ; j++) {
                // min对应的数比后面的数大
                if(arr[min] > arr[j]) {
                    min = j 
                }
            }
            console.log(min);
            // 拿到最小值以后,与第一个位置上的值交换
            if(min !== i) {
                var t = arr[i] ;
                arr[i] = arr[min] ;
                arr[min] = t ;
            }
        }


        console.log(arr);

15.数组的基本方法

        // push(v1,v2,v3...)   向数组尾部追加值
        // pop()  在数组尾部删除一个值

        // unshift()   向数组的头部追加值
        // shift()     向数组的头部删除一个值

        var arr = [1,2,3] ;
        // arr[3] = 'a' ;
        arr.push('a' , 'b' , 'c') ;
        console.log(arr);
        arr.pop() ;
        console.log(arr);

        arr.unshift('hello' , 'hi');
        console.log(arr);
        arr.shift();
        console.log(arr);


        var arr2 = [] ;
        for(var i = 0 ; i <= 10 ; i++) {
            // arr2[i] = i 
            arr2.push(i)
        }
        console.log(arr2);

16.push封装

        // 向一个数组中追加数据

        // var arr = [1,2,3,4] ;
        // arr[arr.length] = 'hello' ;
        // console.log(arr);


        // function push(n , n2 , n3) {  
        //     var arr = [1,2,3,4] ;
        //     arr[arr.length] = n ;
        //     arr[arr.length] = n2 ;
        //     arr[arr.length] = n3 ;
        //     console.log(arr);
        // }


        function push() {  
            var arr = [1,2,3,4] ;
            // 用于接受实参列表  --- 伪数组
            console.log(arguments);
            for(var i = 0 ; i < arguments.length ; i++) {
                console.log(arguments[i]);
                arr[arr.length] = arguments[i]
            }
            
            console.log(arr);
        }

        push('a','b','h' ,'t')

17.pop封装

        // 删除数组中的最后一个值

        function pop() {  
            var arr = [1,2,3,4,5] ;

            var arr2 = [] ;
            for(var i = 0 ; i < arr.length - 1 ; i++) {
                arr2.push(arr[i])
            }
            console.log(arr2);
        }

        pop()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值