1.String的扩展方法
1.1.模板字符串 ``
-- let name = `daiwang`
-- 1.模板字符串可以解析变量
let name = 'daiwang'
let Hi = `${name}`,hi //daiwang,hi
-- 2.模板字符串可以换行
-- 3.在模板字符串中可以调用函数
${fn()}
1.2.实例方法
1.2.1.startsWith()和endsWith()
-- startsWith():表示参数字符串是否在原字符串的头部,返回布尔值
-- endsWith():表示参数字符串是否在原字符串的未必,返回布尔值
let str = ‘Hello World!’
str.startsWith('Hello') //true
str.endsWith('!') //true
1.2.2.repeat()
-- repeat方法表示将原字符串重复n次,返回一个新字符串
'x'.repeat(3) //'xxx'
'hello'.repeat(2) //'hellohello'
2.Set数据结构
-- ES6提供了新的数据结构Set,他类似由于数组,但是成员的值都是唯一的,没有重复的值。
-- Set 本身就是一个构造函数,用来生成Set数据结构
const s = new Set()
-- Set函数可以接受一个数组作为参数,用来初始化
const set = new Set([1,2,3,4,4]) //{1,2,3,4}
2.1.实例方法
-- add(value):添加某个值,返回Set结构本身
-- delete(value):删除某个值,返回一个布尔值,表示删除是否成功
-- has():返回一个布尔值,表示该值是否为Set的成员
-- clear():清除所有成员,没有返回值
-- 举个例子:
const s = new Set()
s.add(1).add(2).add(3) //向Set结构中添加值
s.delete(2) //删除Set结构中的2
s.has(1) //Set结构中是否有1 true
s.clear() //清除Set结构中所有值
注意:删除的是元素的值,不是索引
-- 遍历:
Set结构的实例与数组一样,也拥有forEach方法,用于对每个成员执行某种操作,没有返回值
举个例子:S.forEach(value => console.log(value))
数组去重:[…new Set(arr)]
3.浅拷贝
-- 只拷贝一才能,更深层次对象只拷贝引用(地址)
var obj = {
id:1,
name:'daiwang'
}
var o = {}
for(let k in obj){ //k是属性名,obj[k]是属性值
o[k] \ obj[k]
}
console.log(o)
方法二:Object.assign(o,obj) //拷贝给谁;拷贝那个对象
4.深拷贝
-- 拷贝多层
function deepCopy(newobj,oldobj){
for(let k in oldobj){
var item = oldobj[k]
if(item instanceof Array){
newobj[k]=[]
deepCopy(newobj[k],item)
}else if(item instanceof Object){
newobj[k]={}
deepCopy(newobj[k],item)
}else{
newobj[k]=item
}
}
}