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

相关文章

问题:第一次世界大战的起止时间是 #其他#学习方法#微信

问题:第一次世界大战的起止时间是 A.1913 ~1918 年 B.1913 ~1918 年 C.1914 ~1918 年 D.1914 ~1919 年 参考答案如图所示

Java五子棋之坐标校正

上篇针对了Java项目中的解构思维,在这篇内容中我们不妨从整体项目中拆解拿出一个非常重要的五子棋逻辑实现:坐标校正,我们如何使漫无目的鼠标点击变得有序化和可控化呢? 目录 一、从鼠标监听到获取坐标 1.MouseListener和MouseAdapter 2.mousePressed方法 二、坐标校正的具体实现方法 1.关于fillOval方法 2.坐标获取 3.坐标转换 4.坐

Spring Cloud:构建分布式系统的利器

引言 在当今的云计算和微服务架构时代,构建高效、可靠的分布式系统成为软件开发的重要任务。Spring Cloud 提供了一套完整的解决方案,帮助开发者快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器等)。本文将探讨 Spring Cloud 的定义、核心组件、应用场景以及未来的发展趋势。 什么是 Spring Cloud Spring Cloud 是一个基于 Spring

[word] word设置上标快捷键 #学习方法#其他#媒体

word设置上标快捷键 办公中,少不了使用word,这个是大家必备的软件,今天给大家分享word设置上标快捷键,希望在办公中能帮到您! 1、添加上标 在录入一些公式,或者是化学产品时,需要添加上标内容,按下快捷键Ctrl+shift++就能将需要的内容设置为上标符号。 word设置上标快捷键的方法就是以上内容了,需要的小伙伴都可以试一试呢!

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

java8的新特性之一(Java Lambda表达式)

1:Java8的新特性 Lambda 表达式: 允许以更简洁的方式表示匿名函数(或称为闭包)。可以将Lambda表达式作为参数传递给方法或赋值给函数式接口类型的变量。 Stream API: 提供了一种处理集合数据的流式处理方式,支持函数式编程风格。 允许以声明性方式处理数据集合(如List、Set等)。提供了一系列操作,如map、filter、reduce等,以支持复杂的查询和转

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

Java面试八股之怎么通过Java程序判断JVM是32位还是64位

怎么通过Java程序判断JVM是32位还是64位 可以通过Java程序内部检查系统属性来判断当前运行的JVM是32位还是64位。以下是一个简单的方法: public class JvmBitCheck {public static void main(String[] args) {String arch = System.getProperty("os.arch");String dataM