WEB_Array数组的api和循环

1.do while循环

        var a = 1;
        do {
            console.log(a);
            a++;
        } while (a < 10);//先执行 然后再进行判断  至少执行一次

        while(a < 10){//先进行判断 ,然后再执行 
            console.log(a);
            a++;
        }

2.arr数组

 // 数组  :   相关的数据集合
        var arr = [1,2,3,4];  //数组的直接量
        // var arr2 = new Array();// 通过构造函数
        console.log(arr.length);
        console.log(arr.toString());//输出arr数组的值

3.数组求总和,平均值 最大值, 最小值

 //求总和     ,平均值
    var arr = [80,90,100,110];
    var sum=0;
    for(var i=0;i<arr.length;i++){
        sum += arr[i];
    }
    console.log(sum);//总和
    console.log(parseInt(sum/arr.length));// 平均值
    console.log("---------------");
    //求arr最大值和最小值
    // var indexMin = arr[0];//设置为最小值
    // for(var i=0;i<arr.length;i++){
    //     if(arr[i]<indexMin){
    //         indexMin = arr[i];
    //     }
    // }
    // console.log(indexMin);

    var indexMax = arr[0];
    for(var i=0;i<arr.length;i++){
        if(arr[i]>indexMax){
            indexMax = arr[i];
        }
    }
    console.log(indexMax);
    // 给一个数组赋值元素 1-100
    var arr2 = [];
    for(var i=1; i<=100;i++){
        arr2[i-1]=i;
    }
    console.log(arr2);

4. push、 pop、shift、unshift、splice、clice、concat、join、reverse、sort

  

//数组的api:应用程序编程接口
        //push  添加
        //pop   
        //shift
        //unshift
    var arr = [1,2,3,4,5,6];
    // arr.push(7); //向数组末尾添加元素一个或多个元素,该方法会将数组的新长度返回
    // console.log(arr);

    // arr.pop(); //该方法可以删除数组的[最后元素,]  并且返回该元素
    // console.log(arr.pop());
    // console.log(arr);
    arr.shift();// 该方法可以删除数组的[第一个元素],返回被删除的元素
    console.log(arr);
    // arr.unshift(0,0);// 向数组开头添加一个或者多个元素,返回数组新的长度

    var arr2 = [1,2,3,4,5,6];
    arr2.splice(0,1,5);   //  第一个参数是从某位置开始,第二个参数是删除几个,第三个参数是添加一个或则多个,如果第二个参数为0,着直接在开始位置添加
    console.log(arr2);

    var arr3 = [1,2,3];
    arr3.slice(0,1);// 1  start开始,包括end  截取  不会影响原数组

    //concat() 合并2个数组,或者多个数组
            //不会对原数组产生影响
    var arr = [1,2,3];
    var arr2 = [4,5,6];
    var arr3 = [7,8,9];
    
    var result = arr.concat(arr2,arr3,10,11);
    console.log(result);
    /* 
                join() 
                    该方法可以将数组转换为一个字符串
                    该方法不会对原数组产生影响,而是将转换后的字符串作为结果返回
                    在join()中可以指定一个字符串作为参数,这个字符串将会成为数组中元素的链接符
    */
    var result1 = arr.join("+");
    console.log(result1);

    /* 
                reverse();
                该方法用来反转数组,(前边去后边 后边去前边)
                该方法会直接修改原数组
             */
    var result2 = arr.reverse();
    console.log(result2);

    /* 
                sort()
                    可以用来对数组的元素进行排序
                    会影响原数组,默认的会按照Unicode编码进行排序
                
                如果是纯数字排序,会按照Unicode的编码排序,会出错。
                    所有对数字进行排序,可能得到错误的结果
                
                我们可以给sort() 添加一个回调函数,来指定排序规则
                    回调函数中需要定义两个形参
                    浏览器将会分别使用数组中元素作为实参去调用回调函数
                    使用哪个元素调用不稳定,但是肯定是在数组a一定在b前边
                浏览器会根据回调函数的返回值来决定元素的位置
                    如果大于0,则调换位子
                    如果小于0,则不变位子
                    如果等于0,会认为2个数相等,不变位子
             */
    var arr4 = [2,5,1,0,5,8,7];
    // var result3 = arr4.sort();
    // console.log(result3);
    arr4.sort(function(a,b){
        return a-b;
    });
    console.log(arr4);

5. 去重 forEach

var arr = [1,2,3,4,5,2,3,4,2,1,4];
        // function qc(arr){
        //     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所在的元素以后,后边的元素会自动补位,
        //                 //此时不会比较这个元素,我们需在比较一次j所在的位置元素
        //                 //使j--
        //                 j--;
        //             }
        //         }
        //     }
        //     console.log(arr);
        // }
        // qc(arr);

        function noRepeat(arr){
            var arr2 = [];
            for(var i=0; i<arr.length;i++){
                if(arr2.indexOf(arr[i]) === -1){
                    arr2[arr2.length] = arr[i];
                }
            }
            return arr2;
        }
        var arr2 = noRepeat(arr);
        console.log(arr2);


        //forEach() 高阶函数--函数的参数是一个函数,或者返回值是一个函数
        arr.forEach(function(item, index, array){
                console.log("item:"+item+"index:"+index);
        });

        // forEach源码
        function forEach(fn,arr){
            for(var i=0;i<arr.length;i++){
                fn(arr[i], i, arr);
            }
        }

        forEach(function(item, index, arr){
            console.log(item);
        },arr);

6. 数组的一些方法归类:

 // concat join reverse some every map filter reduce sort
    
    var arr = [1,2,3,4,60,5,2,31];

    //some 判断是否第一个有满足条件的元素
    // 参数: 和forEach一样
    // 返回值是一个布尔值,找到满足条件的第一个元素,则终止循环, 返回true,  否则返回false
    var bool = arr.some(function(v, i, arr){
        return v > 60;
        
    });
    console.log(bool);

    //filter: 过滤
    // 参数和forEach一样
    // 把满足条件的元素筛选出来
    // 返回值是一个新的数组,不会对原数组产生影响


    //every
    // 参数和forEach一样 
    // 判断每一个元素有满足条件的元素
    // 返回值是一个布尔值,找到都满足, 返回true,  否则返回false
    

    //map
    // 功能:对原数组遍历(迭代)
    // 参数和forEach一样 
    // 返回值:根据原数组产生长度一样的新数组,新数组的没一个元素有原数组对应的元素带入函数参数后的返回值



    //和她一样
    // for(var i=0;i<arr.length;i++){
    //     arr[i] = arr[i]+1;
    // }
    // console.log(arr);


   

  7.Reduce数组api详细分析和实例:https://www.jianshu.com/p/e375ba1cfc47

  8. split返回指定参数出现的个数练习

 

// var str = "25hhh222hhh2h";
    // var index = 0;
    // while("h" === str[str.indexOf("h")]){
    //         str = str.slice(str.indexOf("h")+1);
    //         index ++;
    // }
    // console.log(index);




    // let num = 0;
    // let str = "25hhh222hhh"ZCOD59214404HC8E0479E0E8EE79692C
    // while(str.indexOf('h')!== -1) {
    // str = str.slice(str.indexOf('h') + 1);
    // num += 1
    // }
    // console.log(num);
    var str = "25hh222hhkjglhsjwut";
    var num = str.split('h').length-1;
    console.log(str.split('h'));
    console.log(num);
    /*
        split('x');  会返回分割后的数组, x的个数就是分割数组的长度-1
    */

    console.log('-------------------------');
    var str2 = 'have a nice day';
    console.log(str2.split("a").length);
    console.log(str2.split("a"));

9. Math的方法

  

//Math方法
            // Math.abs()  绝对值
            // Math.ceil(9.1)  // 10 向上取整
            // Math.ceil(-9.1) // -9
            // Math.floor(9.1) // 9 向下取整
            // Math.floor(-9.1) // -10
            // Math.max(10,2,3,45,2);   //45
            // Math.min(10,2,3,45,2);  //2
            // Math.min(...[10,2,3,45,2]);  2  //ES6的展开运算符
            // Math.pow(2,4); 2的4次方   16
            // Math.sqrt(16);   4  平方根
            // Math.round(9.5);  //10  四舍五入
            // Math.random();   //随机数   0-1的随机值

    // 设置指定范围的随机数
      设置 1-9的随机数

      // 思路 比如3就是大数 大数 = 大数 - 小数 + 1 小数 = 小数

      Math.floor(Math.random*大数 + 小数);

       Math.floor(Math.random()*9 + 1)

10.倒计时练习

setInterval(function(){
        var startTime = new Date(); //获取当前时间
        var endTime = new Date("2020/4/17");

        var count = (startTime.getTime() - endTime.getTime())/1000;
        var Day = parseInt(count / (24*60*60));
        var Hours = parseInt(count / (60*60)%24);
        var minute = parseInt(count / 60%60);
        var seconds = parseInt(count %60);
        console.log(Day+"天"+Hours+"小时"+minute+"分钟"+seconds+"秒");
    },1000);

11.

posted @ 2020-05-23 09:13  艺术就是派大星_s  阅读(189)  评论(0)    收藏  举报