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 Stream流与使用操作指南

《JavaStream流与使用操作指南》Stream不是数据结构,而是一种高级的数据处理工具,允许你以声明式的方式处理数据集合,类似于SQL语句操作数据库,本文给大家介绍JavaStream流与使用... 目录一、什么是stream流二、创建stream流1.单列集合创建stream流2.双列集合创建str

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF