ES6
字符串扩展
repeat():重复功能
var str = 'hello 王成!\n'
var res = str.repeat(20)
console.log(res)
补充说明:\n转义字符,把这个字符原来的意思给转换了,变成了表示换行。br只能在网页中解析
includes() startsWith() endsWith() 判定字符串中是否存在某个字符
includes()配合filter()方法可以做模糊搜索功能
console.log('hello'.includes('a'))
console.log('hello'.includes('h'))
console.log('hello'.startsWith('a'))
console.log('hello'.startsWith('h'))
console.log('hello'.endsWith('s'))sole.log('hello'.endsWith('o'))
for of
for of 遍历方式,可以遍历数组也可以遍历字符串,可以直接拿到结果
var str = '王成'
for(let item of str){
console.log(item)
}
console.log(item)
模版字符串
模板字符串:就是把咱们之前字符串的拼接进行了简化处理
语法:``
特点:简化了字符串拼接操作、可以让字符串进行换行操作、可以在模板里面
直接使用变量 ${变量名称}
解构赋值
- 数组解构
let [a, b, c] = [10, 20, 30] console.log(a, b, c) let [arr, obj, num] = [[1, 2], {a: 1}, 10] console.log(arr, obj, num) let [a, , b] = [10, 20, 30] console.log(a, b) - 字符串解构
let str = '王成很厉害' let [a, b, c, d, e] = str console.log(a, b, c, d, e) - 对象解构
let str = '王成很厉害' let [a, b, c, d, e] = str console.log(a, b, c, d, e) 对象解构 let obj = { name: '张三', age: 18, like: ['篮球', '足球'], info: { id: 1, des: '他是一个很牛的人 } } let {name, age} = obj console.log(name, age) let {like} = obj console.log(like) let {info: {id, des}} = obj console.log(id, des) console.log(obj.info.des) - 交换两个变量的值
let a = 10; let b = 20; [a, b] = [b, a] console.log(a, b)
Symbol
创建一个Symbol类型,独一无二,每个Symbol和Symbol之间都不相同
Symbol()括号里面写的是一个描述信息,不是值。因为Symbol类型专门用来做属性的
let sy1 = Symbol(10)
let sy2 = Symbol(10)
console.log(sy1 == sy2) // false
let num1 = 10
let num2 = 10
console.log(num1 == num2) // true
// let obj = {name: '王成'}
// obj[Symbol('name')] = '崔傑瑜'
// console.log(obj)
let obj = {
[Symbol('name')]: '张三'
}
obj[Symbol('name')] = '王成'
// console.log(obj)
let arr = Object.getOwnPropertySymbols(obj)
console.log(arr[0])
console.log(obj[arr[0]])
console.log(obj[arr[1]])
Set()
Set() 里面的数据不能有重复的,自带过滤功能
// let s = new Set(['a', 'a', 'b', 'b', 'a', 'c'])
// console.log(s)
// 数组去重
// let arr = ['a', 'a', 'a', 'b', 'c', 'b']
// let s = new Set(arr)
// let res = Array.from(s)
// console.log(res)
let s = new Set(['a', 'b', 'c'])
// - `add(value)`:添加一个值,返回Set结构本身
// - `delete(value)`:删除某个值,返回布尔值
// - `has(value)`:返回布尔值,表示是否是成员
// - `clear()`:清除所有成员,无返回值
console.log(s.size)
// s.add('d')
// s.add('n')
// s.add(['a', 'b'])
s.delete('a')
console.log(s.has('a'))
s.clear()
console.log(s)
Map()
不用Map()
问题:无论把什么类型当成对象的键来使用,最终都会把这个类型转成字符串类型来展示。有时候需要的是就是这个类型本身当初对象的键
let obj = {}
let arr = ['a', 'b']
obj[arr] = '我是一个数组'
obj[1] = '我是一个数字'
console.log(obj)
console.log(arr.toString())
Map()对象,专门可以解决以上的问题。你写的是什么类型作为对象的键,那么就是什么类型
keys(): 取出Map里面所有的键values(): 取出Map里面所有的值entries():取出里面所有的键和值set(): 增加、修改delete(): 删除clear(): 清除
let arr = [10, 20]
let mp = new Map([
[10, '我是一个数字'],
[{a: 1}, '我是对象,但是我可以当成键'],
[arr, '我是数组']
])