ES6字符串、对象、数组不常见但实用的API方法

简介: ES6字符串、对象、数组不常见但实用的API方法

以下所有的方法都是ES6新增的  

1、字符串


1.1 at()方法


作用:

返回字符串给定位置的字符。可以理解为字符串截取,比之前的charAt()好用多了。

例子:

1. 'abc'.at(0)  // 'a'
2. 
3. "你好".at(0) // '你'

1.2 includes()方法


传统上,只有indexof方法可用来确定一个字符串是否在另一个字符串中,ES6又提供了三种方法,三种分别是includes()、startsWith()、endsWith(),这里只说includes方法,因为它最强大,注意,这个方法在数组、对象上依然可以使用,非常强大。

作用:

includes():返回布尔值,表示是否找到了参数字符串;支持第二个参数,表示开始搜索的位置

例子:

let s = 'hello world!'
s.includes('o') //true
s.includes('hello',0) //true

1.3 repeat()


这个方法实际作用不大,但是挺好玩的,就放上来了。

作用:

返回一个新字符串,表示将原字符串重复n次

例子:

'x'.repeat(3) // 'xxx'
'hello'.repeat(2) // 'hellohello'
'na'.repeat(0) // ''
参数如果是小数,会被取整
'na'.repeat(2.9) // 'nana'
参数如果是负数或者Infinity,会报错
如果是 0~1 之间的小数,则等同于0 
参数NAN等同于0
repeat的参数如果是字符串,则会先转换为数字
'na'.repeat('na') // ''
'na'.repeat('3') // 'nanana'

1.4 padStart() 、padEnd()


作用:

指定字符串长度,填充补足长度

例子:

'x'.padStart(5,'ab') //'ababx'
'x'.padStart(4,'ab') //'abax'
'x'.padEnd(5,'ab') //'xabab'
'x'.padEnd(4,'ab') //'xaba'

2.数组


2.1 Array.from()


作用:

将伪数组(有length长度,可遍历但不能用数组api的)转为真数组

一共有三个参数,第一个是转数组的数据;第二个是类似于map()方法对每个元素进行处理;第三个参数用来绑定this

例子:

let arr = {
    "0":'a',
    "1":'b',
    length:2
        }
let arr2 = Array.from(arr) //['a','b']

2.2 Array.of()


作用:

将一组值转换为数组。主要目的是弥补数组构造函数Array()的不足

例子:

Array.of(3,11,8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1
Array.of() // []
Array.of(undefined) // [undefined]

2.3 copyWithin()


作用:

将指定位置的数据复制到其他位置,这个方法会修改数组

有三个参数:target(必选):从该位置开始替换数据;start(可选):从该位置开始读取,默认为0;end(可选):从该位置前停止读取数据

例子:

[1,2,3,4,5].copyWithin(0,3)  // [4,5,3,4,5]
//将3号位复制到0号位
[1,2,3,4,5].copyWithin(0,3,4) // [4,2,3,4,5]

2.4 find()和findIndex()


作用:

find用于找出第一个符合条件的数组成员;findindex和find非常类似,返回符合条件的数组成员的位置,找不到返回-1

2.5 fill()


作用:

使用给定值填充数组

例子:

['a','b','c'].fill(7) // [7,7,7]
['a','b','c'].fill(7,1,2) // ['a',7,'c'] 既包括1 但不包括2

2.6 entries()、keys()、values()


作用:

用于遍历数组,返回一个遍历器对象,可用for…of循环遍历

entries():遍历键值对;keys():遍历键;values():遍历值;

2.7 includes()


作用:

表示某个数组是否包含给定的值,和字符串的类似(很强大,很好用,很推荐)

该方法的第二个参数表示搜索的起始位置,默认为0.如果第二个参数为负数则表示倒数的位置,如果这时他大于数组的长度,则会重置为从0开始

[1,2,3].includes(2) // true
[1,2,3].includes(4) // false
[1,2,NaN].includes(NaN) // true
[1,2,3].includes(3,-1) // true
[1,2,3].includes(3,3) // FALSE

3.对象


3.1 Object.is()


作用:

比较两个值是否相等;用来比较两个值是否严格相等,与===的行为基本一致;

比较对象的时候,比的是引用地址,不是值哈,比较值思路是比较键、值是否一样

例子:

Object.is('foo','foo') //true

3.2 Object.assign()


作用:

复制对象

第一个参数是目标对象,后面的参数都是源对象;是浅拷贝;

他还有很多作用:

为对象添加属性

为对象添加方法

克隆对象

合并多个对象

为属性指定默认值

例子:

let target = {a:1}
let source = {b:2}
Object.assign(target,source)
target // {a:1,b:2}

3.3 es6属性的遍历


for…in :自身和继承的可枚举属性不包含symbol

Object.keys():自身的可枚举属性不包含symbol

Object.getOwnPropertySymbols():自身的所有symbol属性

Object.getOwnPropertyNames():自身的所有属性不包含symbol,但包括不可枚举属性

Reflect.ownKeys() : 自身所有属性,不管是symbol还是字符串也不管是否可枚举

3.4 Object.keys() 、Object.values()、 Object.entries()


和上面讲的数组的一样的作用

3.5 Null传导运算符


作用:

用来判断对象是否具有某属性

例子:

obj?.prop:读取对象属性
a?.b = 42 // 如果a是null或undefined,这句不产生任何效果,否则执行

3.6 Object.getOwnpropertyDescriptors()


作用:

用来返回某个对象属性的描述对象;返回指定对象所有自身属性(非继承属性)的描述对象;主要是为了解决Object.assign()无法正确复制get属性和set属性的问题

3.7 __proto__属性、Object.setPrototypeof()、 Object.getPrototypeof()


作用:

__proto__属性:读取或者设置当前对象的prototype对象(原型)

let obj = {
    name:"123"
    }
obj.__proto__ = someOtherObj

Object.setPrototypeof():设置原型对象

Object.getPrototypeof():读取原型对象

相关文章
|
2月前
|
自然语言处理 算法 Java
地址描述转换为坐标点不使用API,有什么转换的方法?
地址描述转换为坐标点不使用API,有什么转换的方法?
267 64
|
24天前
|
测试技术 API 项目管理
API测试方法
【10月更文挑战第18天】API测试方法
41 1
|
24天前
|
Java 大数据 API
别死脑筋,赶紧学起来!Java之Steam() API 常用方法使用,让开发简单起来!
分享Java Stream API的常用方法,让开发更简单。涵盖filter、map、sorted等操作,提高代码效率与可读性。关注公众号,了解更多技术内容。
|
1月前
|
JavaScript 前端开发 Java
多种语言请求API接口方法
每种语言和库的选择取决于具体需求、项目环境以及个人偏好。了解这些基本方法,开发者就可以根据项目需求选择合适的语言和库来高效地与API交互。
37 1
|
1月前
|
安全 测试技术 API
一图看懂API测试9种方法
一图看懂API测试九种方法:冒烟测试验证基本功能,功能测试确保符合规格,集成测试检查组件协同工作,回归测试防止新变更引入问题,负载测试评估性能稳定性,压力测试挑战极限负载,安全测试发现并修复漏洞,用户界面测试确保UI与API协调,模糊测试提升异常数据处理鲁棒性。
|
1月前
|
API Python 容器
再探泛型 API,感受 Python 对象的设计哲学
再探泛型 API,感受 Python 对象的设计哲学
20 2
|
2月前
|
JavaScript 前端开发 API
什么是ES6的Proxy对象和Reactive API
【9月更文挑战第3天】什么是ES6的Proxy对象和Reactive API
28 9
|
3月前
|
安全 Java API
|
3月前
|
Java API 开发者
|
3月前
|
UED 开发工具 iOS开发
Uno Platform大揭秘:如何在你的跨平台应用中,巧妙融入第三方库与服务,一键解锁无限可能,让应用功能飙升,用户体验爆棚!
【8月更文挑战第31天】Uno Platform 让开发者能用同一代码库打造 Windows、iOS、Android、macOS 甚至 Web 的多彩应用。本文介绍如何在 Uno Platform 中集成第三方库和服务,如 Mapbox 或 Google Maps 的 .NET SDK,以增强应用功能并提升用户体验。通过 NuGet 安装所需库,并在 XAML 页面中添加相应控件,即可实现地图等功能。尽管 Uno 平台减少了平台差异,但仍需关注版本兼容性和性能问题,确保应用在多平台上表现一致。掌握正确方法,让跨平台应用更出色。
50 0