JS高级(10)String的扩展方法 深拷贝,浅拷贝,Set

本文介绍了JavaScript中的String扩展方法,包括模板字符串、startsWith()、endsWith()和repeat()。此外,还探讨了Set数据结构的实例方法在数组去重中的应用。最后,文章讲解了浅拷贝和深拷贝的概念及其区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值