ES6新增扩展:字符串-数值-数组-函数-对象
ES6新增扩展
- 字符串的扩展
- 判断字符串是否包含在另一个字符中
- 字符串补全
- 字符串重复
- 消除字符串空格
- replaceAll()替换全部字符串
- at字符串匹配输出
- 数值的扩展
- 数值分隔符
- 检测数值是否有限
- 检测是否为NaN
- Number.parseInt()、Number.parseFloat()
- isInteger()判断是否为整数
- Math.sign()判断是正、负、零,非数值会先转换数值
- Math.hypot()方法返回所有参数的平方和和平方根
- BigInt数据类型-大整数
- 函数的扩展
- 函数作用域
- rest参数(...剩余运算符)
- 箭头函数
- 箭头函数this指向
- 数组的扩展
字符串的扩展
判断字符串是否包含在另一个字符中
let s = 'h'
s.startsWith('hello') // 是否在头部
s.endWith('hello') // 是否在尾部
s.includes('hello') // 字符串中是否存在
字符串补全
let b = 'how'
b.padStart('5','a') // 不足5个字符,在头部补缺少的'a'
.padEnd('5','a') // 尾部补全
.padStart('5') // 省略第二个参数用空格代替
字符串重复
let a = 'hello'
a.repeat(3) // hellohellohello 重复三次
'w'.repeat(3) // www 重复三次
'w'.repeat(3.5) // 取整,重复三次
消除字符串空格
let s = ' abc '
s.trim() // 消除首尾空格
s.trimStart() // 消除首部空格
s.trimEnd() // 消除尾部空格
replaceAll()替换全部字符串
let s = 'hello'
s.replaceAll('l','o') // heooo
at字符串匹配输出
// 整数头部 复数尾部
'hello'.at(2) // l 从头部第0位开始,初始下标0
'hello'.at(-1) // 从尾部第1位开始,初始下标1
数值的扩展
数值分隔符
允许给较长的数值添加分隔符,分割不没有间隔位数限制,不影响原值,不能再特殊符号前后。
let num = 1_00_000_000;
检测数值是否有限
有限:true
无限:false
Numbet.isFinite(10) // true
Numbet.isFinite(NaN) // false
检测是否为NaN
是:true
否:false
Number.isNaN(NaN) // true
Number.isNaN(10) // false
Number.parseInt()、Number.parseFloat()
将es5的全局方法parseInt()、parseFloat()改为Number.xxx,目的是减少全局方法,使语言模块化。
parseInt('12.55'); // 12
Number.parseInt('12.55'); // 12parseFloat('12.55'); // 12.55
Number.parseFloat('12.55'); // 12.55
isInteger()判断是否为整数
注意:如果数值位数太长,可能会误判,IEEE754标准,53个二进制位后的数值会被丢弃
Number.isInteger(15) // true
Number.isInteger(1.5) // false
Number.isInteger(false) // false
Number.isInteger(3.0000000000000002) // true
Math.sign()判断是正、负、零,非数值会先转换数值
Math.sign('5') // 1 整数
Math.sign(5) // 1
Math.sign(-5) // -1 负数
Math.sign(0) // 0
Math.sign(-0) // -0
Math.sign(true) // 1
Math.sign(false) // -1
// 其它 NaN
Math.hypot()方法返回所有参数的平方和和平方根
Math.hypot(3,4); // 5
BigInt数据类型-大整数
大整数语法(后缀n):数据n
BigInt大整数可以保持数值精度
let a = 2172141653n // 大整数
let b = 15346349309n // 大整数
console.log(a*b); // 33334444555566667777n // 可以保持精度
普通数值与大整数不相等
15n === 15 // false
BigInt继承Object对象的两个实例方法
- BigInt.prototype.toString()
- BigInt.prototype.valueOf()
BigInt继承了Number对象的一个实例方法
- BigInt.prototype.toLocaleString()
提供了三个静态方法
- BigInt.asUintN(width, BigInt)
- BigInt.asIntN(width, BigInt)
- BigInt.parseInt(string[, radix])
BigInt转换规则
Boolean、Number、String三个方法。
转换后后缀n会消失
Boolean(0n) // false
Number(2n) // 2
String(2n) // 2
数学运算和number类型基本一致,除法运算 / 会舍去小数部分,返回一个整数
函数的扩展
函数作用域
函数进行生命初始化时,参数部分会形成一个单独的作用域,等初始化结束,作用域消失,该作用域在不设置参数默认值时不会出现。
var x = 1
// 传入参数 x = 2 , y = x , y = 2
function f(x,y = x){console.log(y);}
f(2) // 2
rest参数(…剩余运算符)
function fn(...val){console.log(val) // [1,2,3]
}
fn(1,2,3)
剩余运算符只能放到最后一位
箭头函数
// 一行简写
let b2 = num => num * 2
// 等同于
let b2 = (num) => {return num * 2}
console.log(b2(10)); // 20
一行默认返回右侧的结果,大括号为代码块,如果箭头函数不是一行,则需要大括号包裹。
无返回值
let b2 = num => void num * 2
console.log(b2(10)); // undefined
参数部分可以解构赋值。
简化回调函数
// 普通函数
let fil = [1,2,3].filter(function(x){return x == 2
})
console.log(fil); // [2]
// 箭头函数
let fil2 = [1,2,3].filter(el=> el == 2 )
console.log(fil2); // [2]
箭头函数this指向
箭头函数没有自己的this,而是引用外层的this。下面是 Babel 转箭头函数产生的 ES5 代码,就能清楚地说明this的指向。
// ES6
function foo() {setTimeout(() => {console.log('id:', this.id);}, 100);
}// ES5
function foo() {var _this = this;setTimeout(function () {console.log('id:', _this.id);}, 100);
}
箭头函数详解请看文章尾部链接
数组的扩展
Array.from() : 类数组转数组
Array.fo():数值转数组
find():返回符合条件的那一项
findIndex():返回符合条件的那一项的索引
findLast():从尾部检查,返回符合条件的那一项
fill():以给定参数填充数组,第二个参数和第三个参数分别为填充的开始位置和结束位置的前一位,从0号位开始
entries():键值对遍历
keys():键名遍历
values():值遍历
includes():判断数组中是否存在对应的值,返回true和false
flat():拉平数组,默认拉平一层,参数为拉平几层,(Infinity深度拉平,不管多少层)
flatMap():拉平并用map函数迭代
at():参数为数组索引,整数从头(0开始),复数从尾(-1开始)
group():可以将数组分组,返回一个对象
let gr = [1,2,3,4,5]
let g = gr.group(el=> el > 3 ? 'greater' : 'less')
console.log(g); // { greater: [4,5], less: [1,2,3] }
groupToMap():使用map对group迭代。
数组空位:数组空位指数组某一个位置没有任何值,undefined是有值的,如果没有值,那么数组空位会返回empty
Array(3); // [empty x 3]也就是[,,,]
stor():排序
let arr = [2,3,6,4,5,1]
// 升序
console.log(arr.sort((a,b) => a - b)); // [1,2,3,4,5,6]
// 降序
console.log(arr.sort((a,b) => b - a)); // [6,5,4,3,2,1]
let arr2 = [{id:1,name:'名称1'},{id:3,name:'名称3'},{id:2,name:'名称2'},{id:6,name:'名称6'},{id:4,name:'名称4'},{id:5,name:'名称5'}]let so = arr2.sort((a,b)=>{ return a.id - b.id });console.log(so);
// [{id: 1, name: '名称1'},{id: 2, name: '名称2'},{id: 3, name: '名称3'},{id: 4, name: '名称4'},{id: 5, name: '名称5'},{id: 6, name: '名称6'}]
箭头函数的详细解释:箭头函数详解
数组的扩展详细解读:数组的扩展和新增方法
对象的扩展详细解读:对象定义-解构-枚举属性遍历以及对象内函数
字符串方法详细解读 : 字符串方法
相关文章:
ES6新增扩展:字符串-数值-数组-函数-对象
ES6新增扩展字符串的扩展判断字符串是否包含在另一个字符中字符串补全字符串重复消除字符串空格replaceAll()替换全部字符串at字符串匹配输出数值的扩展数值分隔符检测数值是否有限检测是否为NaNNumber.parseInt()、Number.parseFloat()isInteger()判断是否为整数Math.sign()判…...
python中import原理
0. 前言 在 python 中引入 Module 是再常见不过了,那么当我们 import 时它做了什么事情呢?它是如何加载 Module 使用的呢? 1. 什么是 module? 一般,Module 是一个后缀为 .py 的文件,其 module 名称一般…...
《Qt6开发及实例》6-4 显示SVG格式图片
目录 一、简介与设计 1.1 简介 1.2 设计 二、SvgWidget 2.1 鼠标滚轮事件 三、svgwindow 四、MainWindow 一、简介与设计 1.1 简介 1、SVG 的英文全称是 Scalable Vector Graphics,即可缩放的矢量图形。它是由万维网联盟(W3C)在 200…...
OpenGL ES 绘制一张图片
GLSL 语法与内建函数 GLSL 的修饰符与数据类型 GLSL 中变量的修饰符 const:修饰不可被外界改变的常量attribute:修饰经常更改的变量,只可以在顶点着色器中使用uniform:修饰不经常更改的变量,可用于顶点着色器和片段…...
Python 之 Pandas DataFrame 数据类型的行操作和常用属性和方法汇总
文章目录一、DataFrame 行操作1. 标签选取2. 数值型索引和切片3. 切片操作多行选取4. 添加数据行4.1 追加字典4.2 追加列表5. 删除数据行二、常用属性和方法汇总1. 转置2. axes3. dtypes4. empty5. columns6. shape7. values8. head() & tail()9. 修改列名 rename()10. inf…...
MacOS下载钉钉直播回放视频的Python最新解决方案
tags: Python MacOS Tips 写在前面 之前写过一篇关于用Charles抓包下载钉钉直播回放视频的方法, 那会还是可以直接通过FFmpeg下载m3u8链接并且直接合并的, 但是现在直接上FFmpeg会出现403, 所以还是用别的方法来做吧. 后来发现抓包找到的m3u8不是加密视频流, 那就直接下载ts…...
2023年测试人跳槽新功略,涨薪10K+
软件测试是如何实现涨薪的呢?很多人眼中的软件测试岗位可能是简单的,技术含量不是那么高,就是看看需求、看业务、设计文档、然后点一点功能是否实现,再稍微深入一点就是测试下安装部署时会不会出现兼容性问题,以及易用…...
RabbitMQ之Work Queues
Work Queues 工作队列(又称任务队列)的主要思想是避免立即执行资源密集型任务,而不得不等待它完成。相反我们安排任务在之后执行。我们把任务封装为消息并将其发送到队列。在后台运行的工作进程将弹出任务并最终执行作业。当有多个工作线程时,这些工作线程将一起处理这些任务…...
CRM哪家好?这5个CRM管理系统很好用!
CRM哪家好?这5个CRM管理系统很好用! CRM(Customer Relationship Management)即客户关系管理,能够帮助提高客户的价值、满意度、赢利性和忠实度,缩减销售周期和销售成本、增加收入、寻找扩展业务所需的新的市场和渠道,…...
国内ce认证机构有哪些 国内十大CE认证机构排名 做ce认证的公司推荐
CE认证,是任何企业的任何产品走进欧盟市场的硬性要求。挑选CE认证机构,一定要认准拥有正规资质的机构/企业,例如中国质量认证中心CQC、CVC威凯、CTI华测检测,以及TV南德认证、安博检测、万泰认证等。本文中,MaiGoo小编…...
多If函数封装的策略
在工作中我们经常遇到有多个if的判读函数,这是一件很正常的事情,如下: let order function (orderType, isPay, count) {if (orderType 1) {// 充值 500if (isPay true) {// 充值成功console.log(中奖100元)} else {if (count > 0) {c…...
238. 银河英雄传说
Powered by:NEFU AB-IN Link 文章目录238. 银河英雄传说题意思路代码238. 银河英雄传说 题意 有一个划分为 N列的星际战场,各列依次编号为 1,2,…,N 有 N艘战舰,也依次编号为 1,2,…,N,其中第 i号战舰处于第 i列。 有 T条指令,每…...
centos7 开机自启动自定义脚本
centos7 开机自启动自定义脚本背景配置自启动jar1.首先书写自启动脚本2.在rc.local中加入脚本reboot测试docker版本的自启动背景 项目中有遇到2个问题, 1: 使用java启动jar包 2: docker容器中自启动个服务。 这2个都要使用linux的开机自启动问…...
【Linux】动静态库的制作
🌠 作者:阿亮joy. 🎆专栏:《学会Linux》 🎇 座右铭:每个优秀的人都有一段沉默的时光,那段时光是付出了很多努力却得不到结果的日子,我们把它叫做扎根 目录👉动静库和静…...
数据备份学习笔记2
Linux实现本地备份的命令: mkdir -p /root/backup/date "%Y-%m-%d" tar -zcvPf /root/backup/date "%Y-%m-%d"/test20230221.tar.gz /root/test20230221/ 我们再看下tar命令选项: tar -czvf txt3.tar.gz txt3 tar -xvf txt4.tar.g…...
webRTC
WebRTC是一种实时通信技术,可以在浏览器中实现音频、视频和数据的实时传输。WebRTC使用标准的API和协议,如RTCPeerConnection和RTCDataChannel等,可以实现点对点通信和多方会议等多种应用场景。WebRTC可以应用于Web前端、移动端和桌面端等多种…...
用Python搓一个黑洞
文章目录简介单位制观测绘图简介 黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。 问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整模糊了得到的呢?有什么理论依据吗&…...
Spring MVC常用功能及注解
目录 一、什么是Spring MVC 1.1 Spring MVC定义 1.2 MVC定义 1.3 MVC和Spring MVC的关系 1.4 Spring MVC的作用 二、Spring MVC的使用 2.1 Spring MVC的创建和连接 2.1.1 RequestMapping注解 2.1.2 GetMapping注解 2.1.3 PostMapping注解 2.2 获取参数 2.2.1 获取单…...
shell 编程
文章目录一、shell 编程1.1. 脚本执行1.2. 变量1.3. 特殊变量1.4. 运算符1.5. for 循环1.6. while 循环1.7. case 语句1.8. read 命令1.9. if 判断1.10. 判断语句1.11. 自定义函数1.12. 脚本调试二、sed2.1. sed 选项2.2. sed function2.3. sed 删除(d 命令…...
Leetcode.1401 圆和矩形是否有重叠
题目链接 Leetcode.1401 圆和矩形是否有重叠 Rating : 1709 题目描述 给你一个以 (radius, xCenter, yCenter)表示的圆和一个与坐标轴平行的矩形 (x1, y1, x2, y2),其中 (x1, y1)是矩形左下角的坐标,而 (x2, y2)是右上角的坐标。 如果圆和矩…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
