Date
Date对象在]S中使用Date对象来表示一个时间对象。
方法
方法 | 描述 |
---|---|
Date() | 返回当日的日期和时间。 |
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getYear() | 请使用 getFullYear() 方法代替。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数。 |
getTimezoneOffset() | 返回本地时间与格林威治标准时间 (GMT) 的分钟差。 |
getUTCDate() | 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。 |
getUTCDay() | 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 |
getUTCMonth() | 根据世界时从 Date 对象返回月份 (0 ~ 11)。 |
getUTCFullYear() | 根据世界时从 Date 对象返回四位数的年份。 |
getUTCHours() | 根据世界时返回 Date 对象的小时 (0 ~ 23)。 |
getUTCMinutes() | 根据世界时返回 Date 对象的分钟 (0 ~ 59)。 |
getUTCSeconds() | 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。 |
getUTCMilliseconds() | 根据世界时返回 Date 对象的毫秒(0 ~ 999)。 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 |
setDate() | 设置 Date 对象中月的某一天 (1 ~ 31)。 |
setMonth() | 设置 Date 对象中月份 (0 ~ 11)。 |
setFullYear() | 设置 Date 对象中的年份(四位数字)。 |
setYear() | 请使用 setFullYear() 方法代替。 |
setHours() | 设置 Date 对象中的小时 (0 ~ 23)。 |
setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59)。 |
setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59)。 |
setMilliseconds() | 设置 Date 对象中的毫秒 (0 ~ 999)。 |
setTime() | 以毫秒设置 Date 对象。 |
setUTCDate() | 根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。 |
setUTCMonth() | 根据世界时设置 Date 对象中的月份 (0 ~ 11)。 |
setUTCFullYear() | 根据世界时设置 Date 对象中的年份(四位数字)。 |
setUTCHours() | 根据世界时设置 Date 对象中的小时 (0 ~ 23)。 |
setUTCMinutes() | 根据世界时设置 Date 对象中的分钟 (0 ~ 59)。 |
setUTCSeconds() | 根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。 |
setUTCMilliseconds() | 根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。 |
toSource() | 返回该对象的源代码。 |
toString() | 把 Date 对象转换为字符串。 |
toTimeString() | 把 Date 对象的时间部分转换为字符串。 |
toDateString() | 把 Date 对象的日期部分转换为字符串。 |
toGMTString() | 请使用 toUTCString() 方法代替。 |
toUTCString() | 根据世界时,把 Date 对象转换为字符串。 |
toLocaleString() | 根据本地时间格式,把 Date 对象转换为字符串。 |
toLocaleTimeString() | 根据本地时间格式,把 Date 对象的时间部分转换为字符串。 |
toLocaleDateString() | 根据本地时间格式,把 Date 对象的日期部分转换为字符串。 |
UTC() | 根据世界时返回 1970 年 1 月 1 日 到指定日期的毫秒数。 |
valueOf() | 返回 Date 对象的原始值 |
Date.now() 返回当前的时间的时间戳。
Unix 时间戳:从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数,不考虑闰秒。
时间戳: 1970 年 1 月 1 日至今的毫秒数。
计算机底层在保存时间时使用都是时间戳。
方法演示
var d1 = new Date("03/11/2022 08:11:23"); //这种时间格式是中国时区的标准格式
console.log(d1);
//创建一个Date对象
var d = new Date();
console.log(d); //Mon Feb 13 2023 14:29:13 GMT+0800 (中国标准时间)
console.log(d.getDate()); // 13
console.log(d.getDay()); // 1
console.log(d.getMonth()); // 2
console.log(d.getFullYear()) // 2023
console.log(d.getHours()) // 14
console.log(d.getMinutes()) // 38
console.log(d.getSeconds()) // 50
console.log(d.getTime()) // 1676270415527
console.log(d1.getTime()) // 1646957483000
console.log(Date.now()) // 1676270608336 获取当前时间戳
Math
Math和其他的对象不同,它不是一个构造函数, 它属于一个工具类,不用创建对象,它里边封装了数学运算相关的属性和方法。
属性
属性 | 描述 |
---|---|
E | 返回算术常量 e,即自然对数的底数(约等于2.718)。 |
LN2 | 返回 2 的自然对数(约等于0.693)。 |
LN10 | 返回 10 的自然对数(约等于2.302)。 |
LOG2E | 返回以 2 为底的 e 的对数(约等于 1.414)。 |
LOG10E | 返回以 10 为底的 e 的对数(约等于0.434)。 |
PI | 返回圆周率(约等于3.14159)。 |
SQRT1_2 | 返回返回 2 的平方根的倒数(约等于 0.707)。 |
SQRT2 | 返回 2 的平方根(约等于 1.414)。 |
方法
方法 | 描述 |
---|---|
abs(x) | 返回数的绝对值。 |
acos(x) | 返回数的反余弦值。 |
asin(x) | 返回数的反正弦值。 |
atan(x) | 以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。 |
atan2(y,x) | 返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。 |
ceil(x) | 对数进行上舍入。 |
cos(x) | 返回数的余弦。 |
exp(x) | 返回 e 的指数。 |
floor(x) | 对数进行下舍入。 |
log(x) | 返回数的自然对数(底为e)。 |
max(x,y) | 返回 x 和 y 中的最高值(多个参数)。 |
min(x,y) | 返回 x 和 y 中的最低值(多个参数)。 |
pow(x,y) | 返回 x 的 y 次幂。 |
random() | 返回 0 ~ 1 之间的随机数。 |
round(x) | 把数四舍五入为最接近的整数。 |
sin(x) | 返回数的正弦。 |
sqrt(x) | 返回数的平方根。 |
tan(x) | 返回角的正切。 |
toSource() | 返回该对象的源代码。 |
valueOf() | 返回 Math 对象的原始值。 |
//常量PI
console.log(Math.PI);
/**
* ceil 可以对一个数进行向上取整。只要小数位值大于0,值就自动进1
*/
console.log(Math.ceil(2.1)); //3
console.log(Math.ceil(4.2)); //5
console.log(Math.ceil(3.0)); //3
/**
* floor 可以对一个数进行向下取整,舍去小数位数值。
*/
console.log(Math.floor(2.1)); //2
console.log(Math.floor(4.2)); //4
console.log(Math.floor(3.0)); //3
/**
* Math.random()可以用来生成一个0-1之间的随机数, 不会出现0和1。
* 生成一个X-y之间的随机数公式:Math.round(Math.random()*(y-x)+
*/
for(var i=0; i<100; i++){
console.log(Math.round(Math.random()*10));
console.log(Math.round(Math.random()*20));
console.log(Math.round(Math.random()*9)+1);
console.log(Math.round( Math.random()*8)+2);
console.log(Math.round (Math.random()*5+1));
}
/**
* max min
*/
console.log(Math.max(1,2,30,4,50,44,32,53));
console.log(Math.min(6,2,30,4,50,44,32,53));
包装类
基本数据类型:String Number Boolean Null Undefined引用数据类型
**Object:**在JS中为我们提供了三个包装类(String、Number、Boolean),通过这三个包装类可以将基本数据类型的数据转换为对象。
但是注意:我们在实际应用中不会使用基本数据类型的对象,如果使用基本数据类型的对象,在做一些比较时可能会带来一些不可预期的结果。
方法和属性只能添加给对象,不能添加给基本数据类型。当我们对一些基本数据类型的值去调用属性和方法时,浏览器会临时使用包装类将其转换为对象,然后在调用对象的属性和方法。调用完以后,在将其转换为基本数据类型。
String
在底层字符串是以字符数组的形式保存的
//创建一个字符串
var str = "Hello"; //这个是底层保存的形式 ["H","e","l","l","o"]
属性
属性 | 描述 |
---|---|
constructor | 对创建该对象的函数的引用 |
length | 字符串的长度 |
prototype | 允许您向对象添加属性和方法 |
方法
字符串的方法大部分不会对源字符串产生影响,会把结果返回到一个新字符串变量里。
方法 | 描述 |
---|---|
anchor() | 创建 HTML 锚。 |
big() | 用大号字体显示字符串。 |
blink() | 显示闪动字符串。 |
bold() | 使用粗体显示字符串。 |
charAt() | 返回在指定位置的字符,参数为字符串的字符数组的索引。和str[index]一样 |
charCodeAt() | 返回在指定的位置的字符的 Unicode 编码。 |
concat() | 连接字符串。 |
fixed() | 以打字机文本显示字符串。 |
fontcolor() | 使用指定的颜色来显示字符串。 |
fontsize() | 使用指定的尺寸来显示字符串。 |
fromCharCode() | 从字符编码创建一个字符串,通过String构造函数调用。例如:String.fromCharCode() |
indexOf() | 检索字符串。检索空字符串返回0 |
italics() | 使用斜体显示字符串。 |
lastIndexOf() | 从后向前搜索字符串。 |
link() | 将字符串显示为链接。 |
localeCompare() | 用本地特定的顺序来比较两个字符串。 |
match() | 找到一个或多个正则表达式的匹配。 |
replace() | 替换与正则表达式匹配的子串。 |
search() | 检索与正则表达式相匹配的值。 |
slice() | 提取字符串的片断,并在新的字符串中返回被提取的部分。 |
small() | 使用小字号来显示字符串。 |
split() | 把字符串分割为字符串数组。 |
strike() | 使用删除线来显示字符串。 |
sub() | 把字符串显示为下标。 |
substr() | 从起始索引号提取字符串中指定数目的字符。 |
substring() | 提取字符串中两个指定的索引号之间的字符。 |
sup() | 把字符串显示为上标。 |
toLocaleLowerCase() | 把字符串转换为小写。 |
toLocaleUpperCase() | 把字符串转换为大写。 |
toLowerCase() | 把字符串转换为小写。 |
toUpperCase() | 把字符串转换为大写。 |
toSource() | 代表对象的源代码。 |
toString() | 返回字符串。 |
valueOf() | 返回某个字符串对象的原始值。 |
代码演示
var str = "hello";
console.log(str) //5 获取字符串的字符个数
console.log(str[3]) //l //可以以数组的形式获取字符串某个字符
//contact
var str1 = str.concat("你好","再见")
console.log(str); //hello
console.log(str1); //hello你好再见
/**
* indexOf - 查找字符串,返回字符串数组的索引, 没有找到返回-1。
* 可以指定第二个参数,指定开始查找的位置(这个位置是字符数组的索引)。
*/
var p = str.indexOf('h');
console.log(p)
var str2 = "s2fsdalfjsdll";
var p1 = str2.indexOf('s', 0);
console.log(p1);
var p2 = str2.indexOf('s', 4);
console.log(p2);
var p3 = str2.indexOf('');
console.log(p2); //0
/**
* lastIndexOf();
* 不同的是indexOf是从前往后找,而lastIndexOf是从后往前找
* 也可以指定开始查找的位置
*/
var p = str.lastIndexOf('h');
console.log(p)
var str2 = "s2fsdalfjsdll";
var p1 = str2.lastIndexOf('s', 0);
console.log(p1);
var p2 = str2.lastIndexOf('s', 4);
console.log(p2);
/**
* slice() 截取字符串片段
* 不会影响原字符串,而是将截取到内容返回
* 参数和数组一样
* 第一个参数只有小于第二个参数,才能截取部分片段。
*/
var str3 = "abcdsfsafasfsdwhgdf";
console.log(str3.slice(1, 3)); //bc
console.log(str3.slice(1, -5)); //dsfsafasfsd
console.log(str3.slice(-9, -6)) //sfs
/**
* substring()
* - 可以用来截取一个字符串,可以slice()类似
* - 参数:
* 第一个,开始截取位置的索引(包括开始位置)
* 第二个,结束位置的索引(不包括结束位置)
* 不同的是这个方法不能接受负值作为参数,如果传递了一个负值,则默认使用0
* 而且如果第二个参数小于第一个, 他会将第一个和第二个位置参数则自动交换
*/
console.log(str3.substring(1, 3)); //bc
console.log(str3.substring(-5, 3));//abc
console.log(str3.substring(1, -3));//a 这里实际参数为substring(1, 0),由于第二个参数小于第一个,所以自动交换substring(0,1)。
/*
* substr()
* -用来截取字符串工
* -参数
* 1.截取开始位置的索引
* 2.截取的长度
*/
str = "abcdefg";
result = str.substr(3,2);
console.log(str);
/* split()
* - 可以将一个字符串拆分为一个数组
* - 参数,
* - 需要一个字符串作为参数,将会根据该字符串去拆分数组
* - 如果传递一个空串作为参数,则会将每个字符都拆分为数组中的一个元素
*/
str = "abc,cd,efg,hij";
result = str.split(",");
console.log(Array.isArray(result));
/* toUpperCase()
* -将一个字符串转换为大写并返回
*/
console.log("abcdseg".toUpperCase())
/*
* toLowercase()
* 将一个字符串转换为小写并返回
*/
console.log("ABCDEFG".toLowerCase())
正则表达式
正则表达式用于定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则,获取将字符串中符合规则的内容提取出来。
创建正则表达式的对象
语法:
/*
* 在构造函数中可以传递一个匹配模式作为第二个参数,可以是
* i 忽略大小写
* g 全局匹配模式
*/
var 变量 = new RegExp("正则表达式","匹配模式"); //使用typeof检查正则对象,会返回 object
/**
* 使用字面量来创建正则表达式
* 语法: var变量=/正则表达式/匹配模式
*/
var n = /正则表达式/匹配模式
使用字面量的方式创建更加简单
使用构造函数创建更加灵活, 构造函数中正则表达式可以传递变量。
正则语法
修饰符
修饰符 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
方括号
方括号用于查找某个范围内的字符:
表达式 | 描述 |
---|---|
[abc] | 查找方括号之间的任何字符。 |
[^abc] | 查找任何不在方括号之间的字符。 |
[0-9] | 查找任何从 0 至 9 的数字。 |
[a-z] | 查找任何从小写 a 到小写 z 的字符。 |
[A-Z] | 查找任何从大写 A 到大写 Z 的字符。 |
[A-z] | 查找任何从大写 A 到小写 z 的字符。 |
[adgk] | 查找给定集合内的任何字符。 |
[^adgk] | 查找给定集合外的任何字符。 |
(red|blue|green) | 查找任何指定的选项。 |
元字符
元字符(Metacharacter)是拥有特殊含义的字符:
在正则表达式中使用\
作为转义字符
元字符 | 描述 |
---|---|
. | 查找单个字符,除了换行和行结束符。 |
\w | 查找单词字符。 |
\W | 查找非单词字符。 |
\d | 查找数字。 |
\D | 查找非数字字符。 |
\s | 查找空白字符。 |
\S | 查找非空白字符。 |
\b | 匹配单词边界。 |
\B | 匹配非单词边界。 |
\0 | 查找 NUL 字符。 |
\n | 查找换行符。 |
\f | 查找换页符。 |
\r | 查找回车符。 |
\t | 查找制表符。 |
\v | 查找垂直制表符。 |
\xxx | 查找以八进制数 xxx 规定的字符。 |
\xdd | 查找以十六进制数 dd 规定的字符。 |
\uxxxx | 查找以十六进制数 xxxx 规定的 Unicode 字符。 |
量词
通过量词可以设置一个内容出现的次数, 量词只对它前边的一个内容起作用.可以通过()
小括号提高内容优先级。例如:
var str = "abcbcbc";
str.test(/(bc){3}/); //查找bc出现3次
量词 | 描述 |
---|---|
n+ | 匹配任何包含至少一个 n 的字符串。 |
n* | 匹配任何包含零个或多个 n 的字符串。 |
n? | 匹配任何包含零个或一个 n 的字符串。 |
n{X} | 匹配包含 X 个 n 的序列的字符串。 |
n{X,Y} | 匹配包含 X 至 Y 个 n 的序列的字符串。 |
n{X,} | 匹配包含至少 X 个 n 的序列的字符串。 |
n$ | 匹配任何结尾为 n 的字符串。 |
^n | 匹配任何开头为 n 的字符串。 |
一般正则表达式都会以^开始并且以$结束,表示完全符号这个正则的需求。
正则表达式对象的方法。
test()
- 使用这个方法可以用来检查一个字符串是否符合正则表达式的规则, 如果符合则返回true,否则返回false
字符串和正则相关的方法
方法 | 描述 |
---|---|
search | 检索与正则表达式相匹配的值。 |
match | 找到一个或多个正则表达式的匹配。 |
replace | 替换与正则表达式匹配的子串。 |
split | 把字符串分割为字符串数组。 |
var str = "1a2b3c4d5e6f7";
/* split()
- 可以将一个字符串拆分为一个数组
* - 方法中可以传递一个正则表达式作为参数,这样方法将会根据正则表达式去拆分字符串
- 根据任意字母来将字符串拆分
-这个方法即使不指定全局匹配,也会全都插分
*/
var result = str.split(/[A-z]/);
console.log(result); //['1', '2', '3', '4', '5', '6', '7']
/**
* search()
-可以搜索字符串中是否含有指定内容
-如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1
-它可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
-只会查找第一个,即使设置全局匹配也没用
*/
str = "hello abc hello aec afc";
result = str.search(/abc|aec|afc/);
console.log(result); //6
result = str.search(/a[bef]c/);
console.log(result); //6
/**
* match()
* - 可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
* - 默认情况下我们的match只会找到第一个符合要求的内容,找到以后就停止检索
* - 我们可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容(/g)
* - 可以为一个正则表达式设置多个匹配模式,且顺序无所谓
*/
str = "1a2b3c4d5e6g7f9ABC";
result = str.match(/[A-z]/g);
console.log(result);//['a', 'b', 'c', 'd', 'e', 'g', 'f', 'A', 'B', 'C']
result = str.match(/[a-z]/g);
console.log(result);//['a', 'b', 'c', 'd', 'e', 'g', 'f']
result = str.match(/[a-z]/gi);
console.log(result);//['a', 'b', 'c', 'd', 'e', 'g', 'f', 'A', 'B', 'C']
/**
* replace()
* 可以将字符串中指定内容替换为新的内容
* 参数:
* 1.被替换的内容
* 2.新的内容
* -默认只会替换第一个
*/
str = "1a2b3a4d5a6a7a9ABC";
result = str.replace("a", "@");
console.log(result); //1@2b3a4d5a6a7a9ABC
result = str.replace(/a/ig, "@");
console.log(result); //1@2b3@4d5@6@7@9@BC