JavaScript基础:Math,Date,String常用方法。

JavaScript中对象主要有3种:自定义对象,内置对象,浏览器对象。

  • 自定义对象:就是自己定义的对象。
  • 内置对象:就是JavaScript自带的一些对象,比如前面聊的数组等,说白了就是自己可以直接用的对象以及其方法。其实前面聊的数组就是内置对象,所以可以调用其内置对象的方法。
  • 浏览器对象,这个后面会聊的的,聊BOM的聊。

本篇就简单的聊一下内置对象Math和Date两个常用的对象,以及常用的方法,当然如果需要使用更加详细的方法可以看一下官方文档。

Math

Math 是一个内置对象,它拥有一些数学常数属性和数学函数方法。Math 不是一个函数对象。 Math 用于 Number 类型。它不支持 BigInt。

与其他全局对象不同的是,Math 不是一个构造器。Math 的所有属性与方法都是静态的。引用圆周率的写法是 Math.PI,调用正余弦函数的写法是 Math.sin(x),x 是要传入的参数。Math 的常量是使用 JavaScript 中的全精度浮点数来定义的。官网文档

聊一下常用的方法来演示一下具体的使用。

属性或方法 描述
Math.PI 圆周率
Math.floor() 向下取整
Math.ceil() 向上取整
Math.round() 返回一个数字四舍五入后最接近的整数
Math.abs() 绝对值
Math.max()/min() 求最大或最小值
Math.random() 返回一个随机浮点数:0<=x<1

Math.PI

其实这个就是Math’对象的一个属性,当然不止这个,只是简单的说这个而已。

在这里插入图片描述

Math.floor()

返回小于或等于一个给定数字的最大整数。不过可以理解 **Math.floor()**为向下取整。

格式:

Math.floor(x) 

演示:

在这里插入图片描述

扫描二维码关注公众号,回复: 14140451 查看本文章

可以看出Math.floor取整数其会靠拢数值较小的整数,不会采用四舍五入。

Math.ceil()

返回大于或等于一个给定数字的最小整数。不过其靠拢的是数值大的整数。

Math.ceil(x) 

演示:

在这里插入图片描述

可以看出是Math.ceil是向大的整数靠拢的,不会采用四舍五入。

Math.round()

函数返回一个数字四舍五入后最接近的整数。

在这里插入图片描述

可以看出正数的话四舍五入但是如果负数的话5就向大值靠拢,而6才会向小靠拢。

Math.abs()

函数返回指定数字 “x“ 的绝对值。

格式:

Math.abs(x);

在这里插入图片描述

Math.max()/min()

两个使用方式一样,只不过一个是求最大,一个求最小,只列举一个:求最大值;

返回一组数中的最大值,格式如下

Math.max(value1[,value2, ...]) 

演示:

在这里插入图片描述

Math.random()

函数返回一个浮点数, 伪随机数在范围从0到小于1,也就是说,从0(包括0)往上,但是不包括1(排除1),然后您可以缩放到所需的范围。实现将初始种子选择到随机数生成算法;它不能被用户选择或重置。

格式:

Math.random()

演示:

在这里插入图片描述

然而在工作中可能有其它的需求,这个在官方文档种也可了几个函数方法:

// 得到一个两数之间的随机数 返回了一个在指定值之间的随机数。这个值不小于 min(有可能等于),并且小于(不等于)
function getRandomArbitrary(min, max) {
  return Math.random() * (max - min) + min;
}

// 得到一个两数之间的随机整数 返回了一个在指定值之间的随机整数。这个值不小于 min (如果 min 不是整数,则不小于 min 的向上取整数),且小于(不等于)max。
function getRandomInt(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min)) + min; //不含最大值,含最小值
}

// 得到一个两数之间的随机整数,包括两个数在内 随机结果需要同时包含最小值和最大值

function getRandomIntInclusive(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min; //含最大值,含最小值 
}

Date

创建一个新Date对象的唯一方法是通过new 操作符,例如:let now = new Date();
若将它作为常规函数调用(即不加 new 操作符),将返回一个字符串,而非 Date 对象。

构造方法:

new Date(); // huod
new Date(value);
new Date(dateString);
new Date(year, monthIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]]);

官网的例子:

var today = new Date();
var birthday = new Date('December 17, 1995 03:24:00');
var birthday = new Date('1995-12-17T03:24:00');
var birthday = new Date(1995, 11, 17);
var birthday = new Date(1995, 11, 17, 3, 24, 0);

不过这样需要注意以下如果用数字的话,会有一个问题,先举例子,然后在解释。

var day1 = new Date(1995, 11, 17);
var day2 = new Date('1995-11-17');

在这里插入图片描述

可以看出如果使用数字的话,其月份比实际要大一个月,因为月份数字的话是从0开始的。所以最好实例化的时候一般更习惯用字符串,毕竟不需要再进行一次换算。

Date.now();

获得当前日期的时间戳。

演示:

在这里插入图片描述

当然时间戳也可以如下得到:

格式:

new Date().valueOf();
// 或者
new Date().getTime();
// 或者
+new Date();

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

通过new得到对象后的一些get方法

在这里插入图片描述

这些方法其实字面意思,所以不在一一举例。

String

String 说白了就是一个字符串的类对象,再说这个之前,先看一个例子。

var a="avd";
a.length;

在这里插入图片描述

声明的变量a,然后直接赋值为基本数据类型,为什么还有属性?属性不是对象才有可能有的吗?

其实这个涉及道一个包装基本包装类型。说白了就是将一个基本数据包装成一个对象的类。其内部有的是如下操作:

// 类似这样一个操作 
var a;
tem=new String("avd");
a=tem;
//
tem=null;

为了方便操作基本数据类型,JavaScript提供了三个特殊的引用类型:String,Number,Boolean。

再JavaScript种的字符串创建之后,其不会变的,这个和java很类似,其实就是堆栈的理解,不想再重复这个堆栈了,可以在我java的分栏里面理解一下。这个主要是为了引出结论:一般不建议字符串进行多次的拼接,会影响性能。

IndexOf和LastIndexOf()

在这里插入图片描述

这两个方法再数组种也有:

indexof格式:

str.indexOf(searchValue [, fromIndex])

**fromIndex可选:**数字表示开始查找的位置。可以是任意整数,默认值为 0。如果 fromIndex 的值小于 0,或者大于 str.length ,那么查找分别从 0 和str.length 开始。(译者注: fromIndex 的值小于 0,等同于为空情况; fromIndex 的值大于或等于 str.length ,那么结果会直接返回 -1 。)举个例子,‘hello world’.indexOf(‘o’, -5) 返回 4 ,因为它是从位置0处开始查找,然后 o 在位置4处被找到。另一方面,‘hello world’.indexOf(‘o’, 11) (或 fromIndex 填入任何大于11的值)将会返回 -1 ,因为开始查找的位置11处,已经是这个字符串的结尾了。

var a='abcdahd
a.indexOf('a');// 0 第一个a的位置
a.indexOf('a',2);//4  动字符串种字符串种第二个开始(本质是第三毕竟是从0开始的)

indexOf方法区分大小写。

官网的例子:

//统计一个字符串中某个字母出现的次数
var str = 'To be, or not to be, that is the question.';
var count = 0;
var pos = str.indexOf('e');

while (pos !== -1) {
  count++;
  pos = str.indexOf('e', pos + 1);
}

console.log(count); // displays 4

lastIndexOf的格式:

str.lastIndexOf(searchValue[, fromIndex])

fromIndex可选: 待匹配字符串searchValue的开头一位字符从 str的第fromIndex位开始向左回向查找。fromIndex默认值是 +Infinity。如果 fromIndex >= str.length ,则会搜索整个字符串。如果 fromIndex < 0 ,则等同于 fromIndex == 0。

返回字符

在这里插入图片描述

charAt()

从一个字符串中返回指定的字符。

格式:

str.charAt(index) //一个介于0 和字符串长度减1之间的整数。 (0~length-1)如果没有提供索引,charAt() 将使用0。

演示:

var a='abcd';
a.charAt(10); // '' 空字符
a.charAt();//'a' 如果不写数值默认是 
a.charAt(3);//'d'

在这里插入图片描述

charcodeAt()

**charCodeAt()** 方法返回 065535 之间的整数,表示给定索引处的 UTF-16 代码单元;

格式:

str.charCodeAt(index);

演示:

var a='abcd';
undefined
a.charCodeAt(10);// NaN  没这个字符  所以为非数
a.charCodeAt();//97 默认第一个 a对应的就是97
a.charCodeAt(2);//99

在这里插入图片描述

str[index]

这个是新特性,不过用法更简单。

演示:

var a='abcd';
a[1];//'b'
a[10];//undefined  这个不像是charAt 返回空而是返回未定义
a[];// 会报错,必须有数值

在这里插入图片描述

concat

这个而是string对象带有的一个方法,就是拼接字符串,格式如下:

str.concat(str2, [, ...strN])

演示:

var a="";
a.concat(1,'d','a');// '1da'

在这里插入图片描述

不过一般开发中更习惯的是使用+连接。

substr

**substr()** 方法返回一个字符串中从指定位置开始到指定字符数的字符。格式如下:

str.substr(start[, length])
  • start
    开始提取字符的位置。如果为负值,则被看作 strLength + start,其中 strLength 为字符串的长度(例如,如果 start 为 -3,则被看作 strLength + (-3))。
  • length
    可选。提取的字符数。

演示:

var a='abcd';
a.substr(1);// 长度不写默认等于剩下字符串长度 'bcd'
a.substr(-1)// 'd' 负数等 4-1 
a.substr(-2)// 'cd' 负数等 4-2 
a.substr(-2,1)// 'c' 负数等 4-2 默认剩下长度有两个字符,而长度写1所以只有一个字符
a.substr(1,10)//'bcd'  截取字符串等一长度过长 没有意义
a.substr(11,13);// ''

在这里插入图片描述

substring(start,end)

**substring() **方法返回一个字符串在开始索引到结束索引之间的一个子集, 或从开始索引直到字符串的末尾的一个子集。

格式:

str.substring(indexStart[, indexEnd])
  • indexStart

    需要截取的第一个字符的索引,该索引位置的字符作为返回的字符串的首字母。如果是负数那就是从0开始。

  • indexEnd 可选。

一个 0 到字符串长度之间的整数,以该数字为索引的字符不包含在截取的字符串内。如果是负数就为0;

这个和substr不同的是第二个参数的意义,一个是表示截取的长度,一个表示截取到索引。

演示:

var a='abcd';
a.substring(-1);// 'abcd'
a.substring(2);// 'cd'
a.substring(2,1)//'b' 可以倒着来
a.substring(2,3);// 'c'

在这里插入图片描述

slice(start,end)

slice() 方法提取某个字符串的一部分

格式:

str.slice(beginIndex[, endIndex])
  • beginIndex

    从该索引(以 0 为基数)处开始提取原字符串中的字符。如果值为负数,会被当做 strLength + beginIndex 看待,这里的strLength 是字符串的长度(例如, 如果 beginIndex 是 -3 则看作是:strLength - 3)

  • endIndex 可选。

    在该索引(以 0 为基数)处结束提取字符串。如果省略该参数,slice() 会一直提取到字符串末尾。如果该参数为负数,则被看作是 strLength + endIndex,这里的 strLength 就是字符串的长度(例如,如果 endIndex 是 -3,则是, strLength - 3)。

    其中一个潜在规则那就是beginIndex<endIndex .

这个和sbstring比较的话,可以将负数变得有意义了,而不是substring种的那样负数都是0.其拥有过的意义有点像是substr了。

演示:

var a='abcd';
 a.slice(-1);// 'd'
a.slice(2,5);// 'cd'
a.slice(2,1);//'' 
a.slice(-2,-1);//'c'
a.slice(-1,-2);//'' 

replace

替换字符串种的值为另一个值。

格式如下:

str.replace(regexp|substr, newSubStr|function)

可以是正则表达式和函数。

补充一下JavaScript中正则如何声明:

//使用RegExp对象创建 
var regObj = new RegExp("(^\s+)|(\s+$)","g");  
//使用直接字面量创建 
var regStr = /(^\s+)|(\s+$)/g;

注意:其中 g 表示全文匹配,与之相关的还有 i 和m,i 表示匹配时忽略大小写,m 表示多行匹配,如果多个条件同时使用时,则写成:gmi

举例

function testA(a){
    return "F";
}
var a='abc1';
a.replace('a','G'); // 'Gbc1'
a.replace(/\d+/g,'R'); //'abcR'
a.replace('c',TestA);// 'abcF' 因为正则匹配没有没有设置分组,可以直接调用函数,如果有参数会根据正则匹配返回的参数依次赋值

split

前面再聊数组的时候可以通过join将数组变成字符串,自然字符串也可以转换数组。

格式:

str.split([separator[, limit]])
  • separator

    指定表示每个拆分应发生的点的字符串。separator 可以是一个字符串或正则表达式。 如果纯文本分隔符包含多个字符,则必须找到整个字符串来表示分割点。如果在str中省略或不出现分隔符,则返回的数组包含一个由整个字符串组成的元素。如果分隔符为空字符串,则将str原字符串中每个字符的数组形式返回。

  • limit

一个整数,限定返回的分割片段数量。当提供此参数时,split 方法会在指定分隔符的每次出现时分割该字符串,但在限制条目已放入数组时停止。如果在达到指定限制之前达到字符串的末尾,它可能仍然包含少于限制的条目。新数组中不返回剩下的文本。

演示:

var a="bacadaea";
a.split('a');//['b', 'c', 'd', 'e', '']
a.split('a',2);//['b', 'c' ]

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011863822/article/details/124154560