不会ES6 你还不学!!!
【摘要】 前言今天一起来学习es6知识 数组新增方法扩展运算符通过扩展运算符... 将数组转化为用逗号分隔的参数序列let arr = [1,2,3]let arr2 = [3,4,...arr,6]console.log(arr2) // [3,4,1,2,3,6]实现数组的复制let arr = [1,2,3]let [...arr1] = arrconsole.log(arr1) // [1...
前言
- 今天一起来学习es6知识
数组新增方法
-
扩展运算符
- 通过扩展运算符
...
将数组转化为用逗号分隔的参数序列
let arr = [1,2,3] let arr2 = [3,4,...arr,6] console.log(arr2) // [3,4,1,2,3,6]
- 实现数组的复制
let arr = [1,2,3] let [...arr1] = arr console.log(arr1) // [1,2,3]
- 扩展运算符与解构结合
- 用于生成数组
- 扩展运算符只能放在最后一位 不然就会报错
let [arr,...arr1] = [1,2,3] console.log(arr) // 1 console.log(arr1) // [2,3] let [...arr, arr1] = [1,2,3] // 报错
- 将字符串转化为真正的数组
let str = 'vike' console.log([...str]) // ['v','i','k','e']
- 通过扩展运算符
-
构造函数新增方法
-
Array.from
- 将类数组转换为数组 类似数组的对象和遍历的对象
let obj = { '0':'a', '1':'b', length:2 } let arr = Array.from(obj) console.log(arr) // ['a','b']
- 该方法接收第二个参数
- 用来对每个元素进行处理 处理完成后放入原数组
Array.from([1,2,3],(x)=>x*x)) // [1,4,9]
-
Array.of
- 将一组值 转化为数组
- 没有参数的时候返回一个空数组
Array.of(1,2,3) // [1,2,3]
- 当参数只有一个的时候为数组长度
Array.of(2) // [,]
- 当参数不少于两个时 才会返回新数组
-
-
数组实例对象新增方法
-
copyWithin
- 将指定位置的成员复制到其他位置 返回当前数组
- 所需参数
- target (必要参数) 从该位置开始替换数据 如果为负值表示倒数
- start (可选) 从该位置开始读取数据
- end(可选) 到该位置前停止读取数据
[1,2,3].copyWithin(0,1) //[2,3,3]
-
find
- 用于找出第一个符合条件的数组元素
- 参数接收一个回调函数,第二个参数绑定回调函数的this
- 参数分别为 value 当前值 index 当前位置 arr原数组
[1,2,3].find((value,index,arr)=>{ return value > 2 // 3 })
-
findIndex
- 返回第一个符合条件数组元素的位置
[1,2,3].findIndex((value,index,arr)=>{ return value > 2 // 2 })
-
fill
- 使用定值,填充数组
- 如果填充类型是对象则是浅拷贝
[1,2,3].fill(3) // [3,3,3]
- 接收第二个参数和第三个参数 用于指定填充的起始位置和结束位置
[1,2,3].fill(4,0,1) // [4,2,3]
-
entries
- 是对键值对的遍历
for(let [index, ele] of ['a','b'].entries()){ console.log(index,ele) // 0'a' 1'b' }
-
keys
- 对键名遍历
for(let index of ['a','b'].keys()){ console.log(index) //0 1 }
-
values
- 对键值遍历
for(let ele of ['a','b'].values()){ console.log(ele) // 'a' 'b' }
-
includes
- 用于判断数组是否包含给定值
[1,2,3].includes(1) // true [NaN,2,3].includes(NaN)// true
- 方法第二个参数表示搜索的起始位置 负数则为倒数
[1,2,3].includes(2,2) // false
-
flat
- 将数组扁平化处理
- 返回一个新数组
- 对原数组没有影响
[1,2,3,[3,4]].flat() // [1,2,3,3,4]
- 默认只会拉平一层 如果有多层嵌套 可加参数
// 拉平两层 [1,2,3,[1,2,[1,2],],].flat(2) //[1,2,3,1,2,1,2]
-
flatMap
- 对数组每个元素执行map,然后对返回数组进行flat()
- 第二个参数用来绑定遍历函数里的this
[1,2,3].flatMap((x)=>[x,x*2]) // [1,2,2,4,3,6]
-
对象新增方法
-
属性的简写
- 当键名与值相等的时候可以简写
let a = {apple:apple} // 简写 let a = {apple}
-
方法简写
- 简写对象方法不能作为构造函数
let fn = { method(){ // do something } } // 等同于 let fn = { method:function(){ // do something } }
-
属性名表达式
- 允许字面量定义对象时 将表达式放入括号内
- 如果是对象 会将对象转化成[object object] 类型
let a = 1 let o = { 'b':2, a:3 } o[a] // 3 o['a'] //3
- 还可用于定义方法名
let fn = { ['v'+'ike']() { // do something } } fn.vike()
-
对象新增方法
- Object.is
- 严格判断两个值是否相等
Object.is(NaN,NaN) // true Object.is(+0,-0) // false
- Object.assign
- 用于对象的合并 属于浅拷贝
- 第一个参数为结果数组 其余参数为合并数组
let obj = {a:1,b:2} let obj2 = {c:3,d:4} let obj3 Object.assign(obj3,obj,obj2) // {a:1,b:2,c:3,d:4}
- Object.getOwnPropertyDescriptors
- 返回指定对象自身属性的描述对象
let obj = {a:1,vike(){return 2}} Object.getOwnPropertyDescriptors(obj) /* a: {value: 1, writable: true, enumerable: true, configurable: true} vike: {writable: true, enumerable: true, configurable: true, value: ƒ} */
- Object.setPrototypeOf
- 用来为对象设置一个原型对象
Object.setPrototypeOf(object, prototype)
- Object.getPrototypeOf
- 用来读取一个对象的原型对象
Object.getPrototypeOf(obj)
- Object.keys
- 返回所有可遍历属性的键名的数组
let obj = {a:1,b:2} Object.keys(obj) // ['a','b']
- Object.values
- 返回所有可遍历属性的键值的数组
let obj = {a:1,b:2} Object.values(obj) // [1,2]
- Object.entries
- 返回所有可遍历属性的键值对的数组
let obj = {a:1,b:2} Object.entries(obj) // [['a',1],['b',2]]
- Object.fromEntries
- 将一个键值对数组转换为对象
let arr = [['a',1],['b',2]] Object.fromEntries(arr) // {a:1,b:2} ``
- Object.is
结语
- ES6语法还有很多 一时更不完 下期再更
- 今日份小知识get~
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)