1、解构赋值
数组的解构赋值
let [, , c] = [1, 2, 3] console.log(c) // 3
let [x] = [] console.log(x) // undefined
let [y = 1] = [] console.log(y) // 1 可以设置默认值
对象的解构赋值
let { a, b } = { b: 'bbb', a: 'aaa'} console.log(a) // aaa 不受顺序影响
let { a: b } = { a: 1 } console.log(a) // ReferenceError: a is not defined console.log(b) // 1 先找到同名的变量然后赋值,真正被赋值的是后面的变量
基本类型的解构赋值
let [a, b, c, d] = '1234' console.log(a, b, c, d) // 1 2 3 4
let { length: len } = 'abcd' console.log(len) // 4
let { toString: ts } = 1 let { toString: bs } = true console.log(ts === Number.prototype.toString) // true console.log(bs === Boolean.prototype.toString) // true
2、 set
类似于数组,但是成员的值都是唯一的,集合数据解构
let a = new Set([1, 2, 3]) // 创建set
console.log(a.size) // 3 set的属性
set的方法
set.add(value) 添加一个数据,返回数据解构本身
a.add(5).add(8)
set.delete(value) 删除一个数据,返回布尔值表示删除是否成功
a.delete(8)
console.log(a.delete(5)) // true
set.has(value) 判断是否有数据,返回布尔值
console.log(a.has(2)) // true
set.clear() 清空set ,没有返回值
set.keys() 返回键名的遍历器
set.values() 返回键值的遍历器 === set.key()
set.entries() 返回键值对
let s = new Set([1, 2, 3]) console.log(s.entries()) // SetIterator {[1, 1], [2, 2], [3, 3]}
set.forEach() 使用回调函数遍历每个成员
s.forEach(function (value, key, set) { console.log(value, key) // 1 1 2 2 3 3 })
利用set进行数组去重
let arr = [1, 2, 3, 5, 2, 6] let arrFin = [] console.log(arr) let s = new Set(arr) s.forEach(function (key, value, set) { arrFin.push(value) }) console.log(arrFin) // [1, 2, 3, 5, 6] 去掉了重复的2