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

2024-06-18 21:18

本文主要是介绍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) 

演示:

在这里插入图片描述

可以看出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' ]

在这里插入图片描述

这篇关于JavaScript基础:Math,Date,String常用方法。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1073082

相关文章

java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)

《java中pdf模版填充表单踩坑实战记录(itextPdf、openPdf、pdfbox)》:本文主要介绍java中pdf模版填充表单踩坑的相关资料,OpenPDF、iText、PDFBox是三... 目录准备Pdf模版方法1:itextpdf7填充表单(1)加入依赖(2)代码(3)遇到的问题方法2:pd

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

最新Spring Security的基于内存用户认证方式

《最新SpringSecurity的基于内存用户认证方式》本文讲解SpringSecurity内存认证配置,适用于开发、测试等场景,通过代码创建用户及权限管理,支持密码加密,虽简单但不持久化,生产环... 目录1. 前言2. 因何选择内存认证?3. 基础配置实战❶ 创建Spring Security配置文件

Spring Security 单点登录与自动登录机制的实现原理

《SpringSecurity单点登录与自动登录机制的实现原理》本文探讨SpringSecurity实现单点登录(SSO)与自动登录机制,涵盖JWT跨系统认证、RememberMe持久化Token... 目录一、核心概念解析1.1 单点登录(SSO)1.2 自动登录(Remember Me)二、代码分析三、

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

Spring AI使用tool Calling和MCP的示例详解

《SpringAI使用toolCalling和MCP的示例详解》SpringAI1.0.0.M6引入ToolCalling与MCP协议,提升AI与工具交互的扩展性与标准化,支持信息检索、行动执行等... 目录深入探索 Spring AI聊天接口示例Function CallingMCPSTDIOSSE结束语