数组去重(包含对象和数组)

一、特殊数组实现去重

  • 数组中有基本数据类型和引用数据类型的两种数据类型的数据,这种数组该怎么去重呢?
  • 比如下面这个数组:
let arr = [1,2,5,9,9,6,2,{name:'老王'},['坤坤','凡凡'],
{name:'老王'},['坤坤','凡凡'],1,3,7]

使用普通的去重方法显然解决不了问题

因为{}=={}的结果和[]==[]的结果都是false
引用数据类型是不能直接进行比较的

  • 具体思路:

将引用数据类型转换成字符串类型,在进行比较

第一步,使用JSON.stringify()方法和map方法将数组中的每一个数组元素都转换为字符串类型,存放在新数组中
第二步,把已经转换成字符串类型的数组,使用filter方法和indexOf方法进行去重,存放到新数组中
第三步,将去重过的数组使用JSON.parse()方法和map方法,把数组中的每一个元素都转换为原本的类型

  • 核心代码:

1.JSON.stringify():将数据转换成字符串类型
2.indexOf(判断的数组元素)===该元素的索引:进行数组的去重的判断条件
3.JSON.parse():将字符串转换成原来的引用类型

代码实现:

let arr = [1,2,5,9,9,6,2,{name:'老王'},['坤坤','凡凡'],
{name:'老王'},['坤坤','凡凡'],1,3,7]

	//封装到函数中,方便以后使用
	function getUnique(data){
		//1.将数组中的每一个元素都转换成字符串类型
		let stringArr = data.map(item => {
			return JSON.stringify(item)
		})

		//2.数组元素去重
		let tempArr = stringArr.filter((item,index)=>{
			return stringArr.indexOf(item) === index
		})
		
		//3.将字符串类型的数组元素转换成原本的数据类型
		let newArr = tempArr.map(item =>{
			return JSON.parse(item)
		}) 
		return newArr
	}
	console.log(getUnique(arr))

没有去重之前的数据
在这里插入图片描述
程序执行后的经过处理的数据
在这里插入图片描述
可以看到数组中重复的元素都被去除了
问题成功解决,撒花!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值