js数组去除重复数据

13 篇文章 0 订阅

1、遍历数组法

建立一个新数组,然后循环遍历要去重的数组,每次判断新数组不包含旧数组的值时(新数组用indexOf方法检索旧数组的值返回结果等于-1)将该值加入新数组。

		let oldArr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
		let newArr = unique(oldArr);

		function unique(arr){
			let hash=[];
			for (let i = 0; i < arr.length; i++) {
				if(hash.indexOf(arr[i]) === -1){
					hash.push(arr[i]);
				}
			}
			return hash;
		}

2、数组下标判断法

与第一种方法类似,先遍历,然后判断当前数组的第i项在数组中第一次出现的位置是否与i相等,不是则说明重复,忽略,不加入新数组。

		let oldArr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
		let newArr = unique(oldArr);

		function unique(arr){
			let hash=[];
			for (let i = 0; i < arr.length; i++) {
				if(arr.indexOf(arr[i]) === i){
					hash.push(arr[i]);
				}
			}
			return hash;
		}

3、排序后判断

对数组进行排序后,将新数组的最后一个值与旧数组的当前值进行比较,如果相等说明重复,不相等则添加至新数组。

		function unique(arr){
			arr.sort();
			let hash = [arr[0]];
			for (let i = 1; i < arr.length; i++) {
				if (arr[i] != hash[hash.length-1]) {
					hash.push(arr[i]);
				}
			}
			return hash;
		}

4、es6的Set去重

Set类型:ES6提供了新的数据结构Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。
Set本身是一个构造函数,用来生成Set数据结构。

所以我们可以直接用Set来处理数组,但是处理完后可以用Array.form方法或者扩展函数把它重新转回数组,不然得到的是Set类型,对于一些有类型判断的地方是不通过的。

4.1、 Array.from转换Set类型为Array

		let oldArr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
		let newArr = new Set(oldArr);
		console.log(newArr);
		console.log(newArr instanceof Array); // 此时是Set类型,不是Array
		newArr = Array.from(newArr);	
		console.log(newArr instanceof Array);

在这里插入图片描述

4.2、 扩展函数转换Set类型为Array

		let oldArr = [1, 2, 3, 4, 5, 5 , 6, 7, 8, 2, 3];
		let newArr = [...new Set(oldArr)];
  • 6
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值