JavaScript的知识点总结(二)

目录

一、数组

     1.数组的定义

      2.数组的应用

二、正则表达式

     1.正则表达式的作用

     2.正则表达式对象的创建

     3.修饰符

     4.原型方法

     5.正则表达式的规则

     6.原型属性

     7.String 对正则表达式的支持

三、面向对象

     1.String类型

     2.Math对象

     3.Date对象


一、数组


    1.数组的定义


        1.使用Array构造函数
           

 var arr=new Array();
 arr[0]=100;arr[1]=200;//通过索引下标进行赋值
 var arr=new Array(20);
 var arr=new Array("terry","larry","boss");//在定义的同时赋值


        2.字面量
            var arr4=[100,200];//在定义的同时进行赋值
            var arr5=[];
            arr5[0]=100;arr5[1]=600;//通过索引下标进行赋值

   
    2.数组的应用


        1.数组类型的检测
            1.typeOf(arr);//object
            2.arr instanceof Array  
            3.Array.isArray(arr); //结果为true,判断arr是否是数组类型
           

//判断当前变量的数据类型
var arr=[];
console.log(typeof arr);//object
//小-->大   当前变量是某个构造函数对应的原型链上吗
console.log(arr instanceof Array);//true
console.log(arr instanceof String);//false
console.log(arr instanceof Object);//true
//大-->小  当前变量是否是我的子孙后代吗?
console.log(Array.prototype.isPrototypeOf(arr));//  true
console.log(Number.prototype.isPrototypeOf(arr));// false
//数组中常用的,封装好的 静态函数:存在于某个构造函数内部公共的、共享的、大家都能使用的
console.log(Array.isArray(arr));//true
console.log(Array.isArray(new Array()));//true
console.log(Array.isArray('abc'));//false
console.log(Array.isArray(null));//false


        2.数组的数据类型的转换
            1.toString() 在默认情况下都会以逗号分隔字符串的形式返回数组项
            2.join(); 使用指定的字符串用来分隔数组字符串  默认用,分割。应用于纯净的数据环境,可以指定连接符。
        3.排序
            1.reverse() 反转数组项的顺序:倒叙排序
                但也会按照ASCII排序
            2.sort():正叙排序
                1.默认排序:该方法会调用每个数组项的toString() 方法,然后按照字符序列排序
                    ASCII码排序:eg.1,10,2,23
                2.自定义排序:
                    a.该方法可以接受一个比较函数作为参数,比较函数有两个参数
                    b.如果第一个参数位于第二个参数之前,返回负数
                    c.如果第一个参数位于第二个参数之后,返回正数
                    例:冒泡排序   快速排序  插入排序
            【注意】【字符串类型的数据项不能以算术操作符进行排序依据】

//自定义排序,定义两个数组
var arr1=[10,1,2,78,56,30];
var arr2=['hello','abc',100,200,'a','world'];

//实现arr1的升序
function numCompare(n1,n2){
    return n1-n2;
}
arr1.sort(numCompare);
console.log(arr1);
arr2.sort(numCompare);
console.log(arr2);

//实现arr的降序
function numCp2(n1,n2){
    return n2-n1;
}
arr1.sort(numCp2);
console.log(arr1);

//实现arr1的反序:索引位置
arr1.reverse(numCompare);
console.log(arr1);

//实现arr2的降序
function strcp(s1,s2){
    if(s1>s2){return -1;}
    else if(s1<s2){return 100;}
    else{return 0;}
}
arr2.sort(strcp);
console.log(arr2);

//实现arr2的升序  利用匿名函数作为参数
arr2.sort(function(s1,s2){
    if(s1>s2){return 100;}
    else if(s1<s2){return -100;}
    else {return 0;}
})
console.log(arr2);


        4.队列栈
            1.push() 在数组尾部添加一个数,并返回数组的长度
            2.pop()   在数组尾部删除一个数,减少数组的length值,返回移除的项
            3.shift()  在数组头部删除一个数,并且返回该项,同时将数组的长度减一。
            4.unshift() 在数组头部添加一个数,并返回新数组的长度。
 

var arr=[];
arr.push(100,200);
arr.unshift('hello','world');
console.log(arr,arr.length);
console.log(arr.pop());//200
console.log(arr.shift());//hello
console.log(arr,arr.length);//world 100 2


        5.截取方法
            1.concat():拼接,返回值就是拼接后的数组,原数组不会受影响。
            2.slice():截取数据项[start,end)=arr.slice(x,y);原数组不受影响。
            3.splice():Array.prototype.splice(index_start,count);原数组会受影响,返回值就是删除掉的数据项
                index_start是负数,就是倒序查找
            splice(index_start,count,'','','');//替换或插入
        6.索引方法
            1.indexOf():从数组开头向后查找,使用全等操作符,找不到该元素返回-1。第一个参数为要查找的项,第二个参数(可选)为索引开始位置
            2.lastIndexOf():从数组末尾向前查找,使用全等操作符,找不到该元素返回-1。第一个参数为要查找的项,第二个参数(可选)为索引开始位置
        7.迭代方法
            1.every():对数组中的每一运行给定的函数,如果该函数对每一项都返回true,则该函数返回true
            2.some():对数组中的每一运行给定的函数,如果该函数对任一项都返回true,则返回true
            3.filter():对数组中的每一运行给定的函数,会返回满足该函数的项组成的数组   不会对空数组进行检测
            4.map():对数组中的每一运行给定的函数,返回每次函数调用的结果组成的数组    不会对空数组进行检测
            5.forEach():对数组中的每一运行给定的函数,没有返回值,常用来遍历元素

var stus=[
    {name:'zs',age:20},
    {name:'ls',age:30},
    {name:'ww',age:25},
    {name:'nai',age:5}
];
//1.有没有成年人
var bool=stus.some(function(value){
    return value.age>=18;
});
console.log(bool);
//2.有没有未成年
var bool=stus.some(function(value){
    return value.age<18;
});
console.log(bool);
//3.是否都成年
var bool=stus.every(function(obj){
    return obj.age>=18;
});
console.log(bool);
//4.把未成年人找出来
var arr1=stus.filter(function(obj){
    return obj.age<18;
});
console.log(arr1);
//5.找到所有的用户名  obj.name
var arr1=stus.map(function(obj){
    //return obj.name;
    return 'work_'+obj.name;
});
console.log(arr1);
//6.找到所有的年龄  obj.age
var arr1=stus.map(function(obj){
    return obj.age;
});
console.log(arr1);
//7.按照td格式输出打印
arr.forEach(function(value){
    console.log('<td>'+value+'</td>');
});

二、正则表达式

     1.正则表达式的作用

               1.主要用于表单校验:手机号、短信验证码、密码,校验用户输入内容的格式是否符合我们的预期。
               2. 还可以从比较长的一段字符中,提取想要的字符内容。
               3.还可以替换文本内容。

     2.正则表达式对象的创建

               1.构造函数
                       修饰符只能是g i m,可以省略
                        var pattern=new RegExp("正则表达式内容","修饰符");
                        var pattern=new RegExp("abc","ig");
               2.字面量
                         var pattern=/正则表达式/修饰符;
                         var pattern=/abc/img;

     3.修饰符

                 1.i   ignore case 忽略大小写   abc  aBc  Abc

                 2.  multiline   多行匹配  (\n:要有换行符才执行匹配)  如果目标字符串中没有\n的话  m修饰符毫无意义。
                 3.g   globe  全词匹配  如果加了修饰符的话,在匹配时,会维护一个lastIndex的属性,用来记录当前匹配到这个字符串时的结束位置,下次匹配会从lastIndex开始。如果没有g修饰符lastIndex一直为0。

       
     4.原型方法

                1.exec(参数):从参数中获取目标字符串;参数:字符串;返回值:类数组对象
            [数组,index,input,groups...]
           

var pattern=/abc/g; //正则表达式
var str="abcAb ac ab abcd we";  //要被匹配的字符串
console.log(pattern.exec(str));
console.log("lastIndex:"+pattern.lastIndex);//5  第一次匹配执行的位置
console.log(pattern.exec(str));
console.log("lastIndex:"+pattern.lastIndex);//15  第二次匹配执行的位置,从5开始

                /abc/:只匹配abc或者它的其他大小写状态
                /abc(d|e):匹配abcd或匹配abce
        2.test(参数):用来检测一个字符串是否匹配某个模式
            参数:str
            返回值:boolean类型 true/false
        3.toString()
            参数:无
            返回值:String
           

var pattern=/abc/i;
var pattern=new RegExp("abc","i");
console.log(pattern.toString());///abc/i

    5.正则表达式的规则

          1.字符类

.用来匹配任意单个字符,但是行结束符除外。
\d匹配任意的一个的阿拉伯数字  等价于[0-9]
\D匹配任意的一个不是阿拉伯数字的字符  等价于[^0-9](取反)
\w匹配任意字母、数字、下划线  等价于[A-Z  a-z  0-9 _]
\W匹配任意不是字母、数字、下划线  等价于[^A-Za-z0-9_]
\s匹配空白符,包括空格、制表符、换行符、换页符和其他Unicode (\u00A0)
\S 匹配非空白符
\t水平制表符
\n换行符
\r回车符
\v垂直制表符
\f 换页符


        2.字符集合
            [0-9]:表示该位置的字符的范围是0-9
            [A-Z]:表示该位置的字符的范围是A-Z
            [^A-Z]:表示该位置的字符的范围不是A-Z
            [012]:表示该位置的字符的范围是0,1,2三个数
        3.分组
            (|): /abc(d|e):匹配abcd或匹配abce

  6.原型属性

        1.globe:布尔值,表明这个正则表达式是否带有修饰符g
        2.ignoreCase:布尔值,表明这个正则表达式是否带有修饰符i
        3.multiline:布尔值,表明这个正则表达式是否带有修饰符m
        4.lastIndex:如果匹配模式带有g,这个属性存储在整个字符串中下一次检索的开始位置,这个属性会被exec(), test()方法调用到
        5.source:包含正则表达式文本

例子:

var pattern=/abc/img;
console.log(pattern.global);
console.log(pattern.ignoreCase);
console.log(pattern.multiline);
console.log(pattern.lastIndex);
console.log(pattern.source);

   7.String 对正则表达式的支持

        1.match()
            调用者:str
            参数:正则表达式
            返回值:数组(匹配成功结果组成的数组)
            如果要实现全部找到结果,要注意正则表达式要开全局匹配g

//匹配abc.  用转义符\.
var pattern=/abc\./g;
var str="abc.d abc abc.c acb.c";
console.log(str.match(pattern));


        2.search()
            调用者:str
            参数:正则表达式,如果参数不是正则表达式,会先使用RegExp将其转为构造函数
            不支持全局检索g
            返回值:
            如果匹配成功,返回第一个成功的位置。
            如果匹配不成功,返回-1。
        3.replace()
            调用者:str
            参数:正则表达式,要替换的字符串
            返回值:替换过后的string 不改变原来的字符串
            //正则表达式在线测试

三、面向对象

        1.String类型

类型作用调用者参数返回值会不会改变原始值
length获取字符串的字符数量string无参数字符串长度不会
charAt(i)返回给定位置的字符string该字符的下标字符不会
charCodeAt(i)返回指定位置的字符ASCII码string该字符的下标字符不会
indexOf()从前往后查找指定字符所在位置string字符该字符的下标不会
lastIndexOf()从后往前查找string字符该字符的下标不会
concat()将一个或多个字符串进行拼接string1string2string1+string2
slice()截取字符串string[开始下标位置,结束下标位置)截取的字符串不会
substr()截取字符串string(开始下标位置,截取字符长度)截取的字符串不会
substring()截取字符串string[start,end)截取的字符串不会
trim()删除字符串前后空格string字符串去掉前后空格的字符串
toLowerCase()将字符串转换为小写string字符串字符串
roUpperCase()将字符串转换为大写string字符串字符串

        

var str="hello";
console.log(str.length);
console.log(str.charAt(1));
console.log(str.charCodeAt(1));
console.log(str.indexOf("l"));
console.log(str.indexOf("l",3));
console.log(str.lastIndexOf("e"));

var str2=",world";
console.log(str.concat(str2));

var s="hello world";
//console.log(s.slice(3,7));//[)左闭右开
console.log(s.substr(3,5));
console.log(s.substring(3,7));
var s1=" hello world ! ! "
console.log(s1.trim());
console.log(s1.toUpperCase());

        2.Math对象

                  (1)常用方法

Math.min()返回一组数中的最小值
Math.max()返回一组数中的最大值
Math.ceil()向上取舍
Math.floor()向下取舍
Math.round()四舍五入
Math.random()

返回在(0,1)之间的一个随机数

               

console.log(Math.min(10,9,5,3,4,6));
console.log(Math.max(10,212,9,8,7));
console.log(Math.ceil(10.41));
console.log(Math.floor(10.41));
console.log(Math.round(10.41));
console.log(Math.round(10.91));
console.log(Math.random());

               (2)其他方法

abs(num)绝对值
exp(num)返回Math.E的num次幂
log(num)返回num的自然对数
pow(num,power)返回num的power次幂
sqrt(num)返回平方根
scos(num)返回反cos
asin(num)返回反sin
atan(x)返回x的反正切值
atan2(y,x)返回y/x的反正切值
cos(x)返回x的余弦值
sin(x)返回x的正弦值
tan(x)返回x的正切值

     3.Date对象

         内置方法:var date=new Date()

 Date.prototype.getFullYear()年份
Date.prototype.getMonth()返回月份【从0-11,所以在执行时要加1】
Date.prototype.getDate()返回日期对象中的几号
Date.prototype.getDay()返回星期几【注意:周日是0,从周日开始到周六】
Date.prototype.getHours()返回小时【从0到23】
Date.prototype.getMinutes()返回分钟数
Date.prototype.getSeconds()返回秒数
Date.prototype.getMilliseconds()返回毫秒
Date.prototype.getTime()将一个日期对象以毫秒形式返回【从1970年01月01日午夜到当前的毫秒数】
Date.prototype.valueOf()将一个Date对象转为毫秒的形式,否则不显示
Date.prototype.getYear()返回Date对象中的年份值减去1900
Date.prototype.toDateString()以字符串的形式返回一个Date的日期部分
Date.prototype.toTimeString()以字符串的形式返回一个Date的时间部分
Date.prototype.toISOString()将一个Date对象转换为ISO-8601格式的字符串,返回的字符串格式为yyyy-mm-ddThh:mm:ssZ
Date.prototype.toJSON()JSON序列化一个对象
Date.prototype.toLocaleDateString()以本地格式的字符串返回一个Date的日期部分,返回一个本地人可读的日期格式,日期部分
Date.prototype.toLocaleString()将一个Date转化难为一个本地格式的字符串

                例子:

var date= new Date();
console.log(date);
console.log(date.getFullYear());
console.log(date.getDate());
console.log(date.getDay());
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getMilliseconds());
console.log(date.getMonth()+1);
console.log(date.getTime());
console.log(date.getYear());
console.log(date.toDateString());
console.log(date.valueOf());
console.log(date.toTimeString());
console.log(date.toISOString());
console.log(date.toJSON());
console.log(date.toLocaleString());
console.log(date.toLocaleDateString());
//写出2021-09-02  19:22:45这样形式的日期
function dateFMT(date){
    var y=date.getFullYear();
    //数字之前0的判断,第一种方法
    var m=date.getMonth()+1<10?"0"+(date.getMonth()+1):date.getMonth()+1;
    //数字之前0的判断,第二张方法
    var d=date.getDate().toString().padStart(2,"0");
    var hh=date.getHours()<10?"0"+date.getHours():date.getHours();
    var mm=date.getMinutes()<10?"0"+date.getMinutes():date.getMinutes();
    var ss=date.getSeconds()<10?"0"+date.getSeconds():date.getSeconds();
    return y+"-"+m+"-"+d+"  "+hh+":"+mm+":"+ss;
}
console.log(dateFMT(new Date()));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值