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

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory