JS-DAY4--这热点网速真宣呼啊

今天的学习不论是容量还是难度,重要性都算的上是密中密了,把这些知识学到手心中本有些窃喜,但是翻看《js忍者秘籍》的目录后才发现自己还有很长的路要走,只不过是迈出了第一步,切记不要妄自菲薄。。以后多看看这些写过的代码。。。好了,今天先到这里,movie time
(致命弯道的原名字居然是wrong turn…)

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        var a1 = new Date();     //由于Date是实例化对象,所以要用new来创造!(在MDN可以查到)
        console.log(a1);
        var a2 = new Date(2011, 10, 1);
        console.log(a2);        //输入10月,返回的确是11月Nov   WHY?会比输入大一个月.....
        var a3 = new Date('2011-10-1 8:8:8');
        console.log(a3);        //这样就没问题了  (最常用的)              WHY?
        console.log(a1.getFullYear());      //COOL~更多这样的代码去MDN查看

        function gettimepue() {
            var time = new Date();
            var h = time.getHours();
            var m = time.getMinutes();
            var s = time.getSeconds();
            h = h > 10 ? h : '0' + h;
            m = m > 10 ? m : '0' + m;
            s = s > 10 ? s : '0' + s;
            return h + ':' + m + ':' + s;
        }
        console.log(gettimepue());      //格式化的时间显示表达
        //-------------------------以---------下---时----间----戳-------------------------------------------------
        console.log(a1.valueOf());      //获取从1970-1-1来的毫秒数,(为求精确)
        console.log(a1.getTime());      //SAME as ABOVE
        var a4 = +new Date();
        console.log(a4);            //简单的方法,但是有一点不精确(4ms左右)
        console.log(Date.now());    //H5新增,最最简单的办法!(同样不精确)

        function countdown(time) {
            var timenow = +new Date();
            var inputtime = +new Date(time);
            var targettime = inputtime - timenow;
            targettime /= 1000;
            var d = parseInt(targettime / 60 / 60 / 24);
            var h = parseInt(targettime / 60 / 60 % 24);
            var m = parseInt(targettime / 60 % 60);
            var s = parseInt(targettime % 60);
            d = d > 10 ? d : '0' + d;
            h = h > 10 ? h : '0' + h;
            m = m > 10 ? m : '0' + m;
            s = s > 10 ? s : '0' + s;
            return d + ':' + h + ':' + m + ':' + s;
        }
        console.log(countdown('2021-3-9 1:1:1'));
        //----------------------以上是倒计时案例----------------------------------------
        var arr = new Array(3);
        console.log(arr);       //创建了一个长度为3的空数组
        var arr1 = new Array(3, 2);
        console.log(arr1);       //这才是创建了一个为[3,2]的数组
        console.log([] instanceof Array); //检测是否为数组(其他的也可以检测!可以用在判断语句上)
        // 很强大的方式--------------(可以做判断哦)------------------------------------------------------------
        console.log(Array.isArray([])); //判断是否为数组的方法2,估计其他类型也有相应的判断模式
        //上面的是H5新增,ie9以上才支持
        //---------------------------(重)以下是如何对数组进行添or删----------------------------
        var arr2 = [1, 2, 3];
        arr2.push(4, '5');       //push();在数组末尾添加1or多个元素,会改变原数组
        console.log(arr2);
        arr2.unshift(0, 'ump45');    //unshift();在数组开头添加1or多个元素,会改变原数组
        console.log(arr2);   //以上2个处理完毕以后如果return都是新(处理)后的数组值(如长度)
        console.log(arr2.pop());    //会返回删除的元素(同JAVA)
        console.log(arr2);          //pop()用于删除数组的最后一个值,其他特性如上。返回值之类的
        console.log(arr2.shift());
        console.log(arr2);      //shift();方法用于删除数组的第一个元素,其他特性如上。返回值之类的

        var mon = [1, 2, 3, 3, 4, 5, 6];
        var newmon = [];
        for (var i = 0; i < mon.length; i++) {
            if (mon[i] <= 3) {
                newmon.push(mon[i]);    //利用push,方便添加数组元素到另一数组
            }
        }
        console.log(newmon);

        //----------------接下来是自带方法--翻转数组----------------------------
        arr2.reverse();
        console.log(arr2);
        //----------------接下来是自带方法--数组排序(<伪>冒泡排序)----------------------------
        mon.sort();
        console.log(arr2);      //字符串会被排序所波及而随意排列?
        var aaa = [5, 1, 6, 2, 7, 'aaa', '100', 'hk416', 'b', 'C', 23, 77, 12];
        aaa.sort(); //抽象的排序方式,会从首位开始看起,然后进行由小到大的排序.....字母也会排序...(算是优点吧。。)
        console.log(aaa);   //猜测字母排序看的是ASCII码,理由是大写排在小写前面!

        //另外一个比较固定的sort写法(和写的冒泡一样)
        aaa.sort(function (a, b) {
            return a - b;
        })
        console.log(aaa);//依然会对字符串按照ASCII码进行排序(?),之不过阳间了许多。。(以后要看源码实现)

        console.log(arr2.indexOf('ump45'));     //获取指定元素在数组中的排序,但是只返回第一个满足条件的索引!!!
        console.log(arr2.indexOf('QAQ'));       //找不到就返回-1
        //还有个lastIndexOf()是从后往前查找的!然而索引还是正序
        //java,,-----------------------------------------------------------------------------------

        //----------------接下来是一个案例,删除重复数组and添加到新数组里去--------------------
        // var b1=['a','b','c','c','d','a'];
        // var b2=[];
        // for(var i in b1){
        //     b2.push(b1[i]);
        //     for(var j in b2){
        //         if(b2[j]==b1[i]){
        //             b2.pop();
        //         }
        //     }
        // }
        // console.log(b2);//失败的案例,他会吧所有都删光....--------------------------------

        // var b1=['a','b','c','c','d','a'];
        // var b2=[];
        // for(var i in b1){
        //     for(var j in b2){
        //         // b1[i]==b2[j] ? console.log('a') : b2.push(b1[i]);  //为啥玩脱了?
        //         if(b1[i]==b2[j]){
        //             continue;
        //         }else{
        //             b2.push(b1[i]);
        //         }
        //     }
        // }
        // console.log(b2);
        // //105-这里简直就是垃圾。。。看来真的得休息下了-------------------------------------------
        var b1 = ['a', 'b', 'c', 'c', 'd', 'a'];
        function seeit(arr) {
            var newarr = [];
            for (var i = 0; i < arr.length; i++) {
                if (newarr.indexOf(arr[i]) == -1) {
                    newarr.push(arr[i]);
                }
            }
            return newarr;
        }       //要思考内在的思想,不要一昧的去硬套理解
        console.log(seeit(b1));



        //--------------------------------------------------------------------------
        var c = [1, 2, 3, 4, 5];
        c.toString();       //注意,这个只是暂时的,不会保留!(重)  WHY?
        console.log(c.toString());//数组转换为字符串,逗号分隔每一项
        //join(分隔符)方法
        var c1 = [1, 2, 3, 'ump45', true];
        console.log(c1.join('|'));      //自定义符号分隔字符串~~

        //---------------------接下来是包装------------------------------
        var c2 = 'ash';
        console.log(c2.length);     //js已经进行了简单的包装(把简单数据类型处理为复杂数据类型)
        var temp = new String('ash');
        console.log(typeof (temp));      //返回格式是object,是对象
        c2 = temp;
        temp = null;        //js相当于自动帮你做了这些事情1,2,3
        //js中,string,number,Boolean都可以进行包装
        //包装后,这些变量就成了对象,有了独有的属性和方法!!



        //js中的字符串值不可变!!!看上去是值变了,其实是新开辟了内存,偷梁换柱罢了
        //和java一样,变量名始终是“遥控器”!有指针指向内存的地址,变内容相当于换台了,详细见《headfirstjava》。。
        //所以,曾经的经典写法var str = '';用来整一些数据就不好了,因为对内存实在太消耗了


        //--接下来是字符串的方法,不过记住,它的所有方法都不会改变字符串的本身(字符串本身不可变),操作后会返回新的字符串
        //首先是string也有index();和lastindex()方法,而且使用方法相同
        //str.index('要找的字符',[起始的位置]);         []内为可选择的,MDN文档里的表示方式也相同


        var str1 = 'qweooooqweoqeo';
        var tar = str1.indexOf('o');
        while (tar != -1) {
            console.log(tar);
            tar = str1.indexOf('o', tar + 1);
        }       //有意思的算法,思考

        var str2 = ['ump', 'aaa', 123, true, 'ump', 'hk', 'ump'];
        var target = str2.indexOf('ump');
        console.log(target);
        console.log('-----------------------')
        while (target != -1) {
            console.log(target);
            target = str2.indexOf('ump', target + 1);
        }       //还是老问题,不要想复杂



        var str3 = 'im a good robot,hi~';
        console.log(str3.charAt(0));        //根据索引找字符
        for (var i = 0; i < str3.length; i++) {
            console.log(str3.charAt(i));    //循环遍历所有字符
        }
        console.log(str3.charCodeAt(0));    //看看索引的ascII码
        console.log(str3[0]);           //H5新增,类似于C中字符串的提取方法,不考虑兼容性可以这么写


        var str5 = 'qweooaaooqweoqeo';
        var item = {};
        for (var i = 0; i < str5.length; i++) {
            var chars = str5.charAt(i);
            if (item[chars]) {
                item[chars]++;      //item[chars]得到的是属性值
            } else {
                item[chars] = 1;
            }
        }
        console.log(item);


        var str5 = 'qweooaaooqweoqeo';
        var item = {};
        for (var i = 0; i < str5.length; i++) {
            // var chars = str5.charAt(i);
            if (item[str5[i]]) {
                item[str5[i]]++;      //item[chars]得到的是属性值
            } else {
                item[str5[i]] = 1;
            }
        }
        console.log(item);      //独立思考!
        var max = 0;
        var ch = ''
        for (var i in item) {
            if (item[i] > max) {        //i 为属性名字
                max = item[i];          //item[i]为属性值
                ch = i;
            }
        }
        console.log(ch + ':' + max);//求出最大值

        // var str5 = 'qweooaaooqweoqeo';
        // var item = {};
        // for (var i = 0; i < str5.length; i++) {
        //     // var chars = str5.charAt(i);
        //     if (item.str5[i]) {
        //         item.str5[i]++;      //item[chars]得到的是属性值
        //     } else {
        //         item.str5[i] = 1;
        //     }
        // }                                                    //为啥这个会报错?
        // console.log(item);      //独立思考!

        //接下来是对字符串进行拼接操作
        var nan = 'annaisgod';
        console.log(nan.concat('dy'));      //类似于加号,加号更常用
        console.log(nan.substr(0, 4));       //字符串截取->target.substr(从哪里开始,截取几个)


        var nan = 'annaisgod';
        console.log(nan.replace('a', 'Q'));      //把指定字符串替换为另一个指定字符串,只能替换第一个

        //以下是替换一个字符串中的全部指定字符---------------------------------------------
        var na = 'abcddaadcf';
        while (na.indexOf('a') != -1) {
            na = na.replace('a', '*');     //注意代换原来的字符,不然会一直卡死在第一位上
        }           //可以作为敏感词过滤的算法
        console.log(na);

        //split('分隔符')  可以把字符串转化为数组(可以一次转换整个字符串)
        var na = 'abcddadadcaf';
        na.split('b');  //同样不会保存          WHY?    
        console.log(na.split('d'));

        //null返回的是一个object ,所以以后有变量想存对象但是现在决定不了,就给他存null  //其实算是一个bug

    </script>
</body>

</html>
已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页