学习笔记二:数组去重

//生成一个有10000个随机数的数组
var arr = [];
for ( var i = 0;i < 10000; i++){
	arr.push( parseInt( Math.random()*10000 ) )
}

方法一,传统,利用对象属性不重复,但速度慢

function unique( arr ){ 
	var obj = {};
	for(var n of arr){
		obj[n] = 1;
	}
	var newArr = [];
	for( var key in obj ){
		newArr.push(parseInt(key));//字符串转为数值
	}
	//如果字符串类型的数组去重,可使用ES6 新特性
	//new Arr = Object.keys(obj);
	return newArr
}
unique1(arr);

方法二,使用ES6 新类型Set对象

  • Set类型的对象:是值不允许重复的集合。
  • 向Set类型的对象中添加新值时,如果Set中没有这个值,才能添加进去,自带过滤重复值功能

- 测试

var arr = [1,2,3,4,5,4,6]
var set = new Set(arr);//将数组转为值不重复的对象
console.log(set) //{1,2,3,4,5,6} 
//使用扩展运算符,转为数组
console.log([...set]) //[1,2,3,4,5,6]

去重使用

function unique2(arr){
	var set = new Set(arr);
	var newArr = [...set];
	return newArr
}
//或者
function unique2(arr){
	return [...new Set(arr)];
}
unique2(arr);

- 数组的数值和字符串可以为数值或字符串,但不可并存,需要先转为数值,后使用Set**

var arr1=['1','2',3,4,'5',5,7,4,1,2,3,6,8]
var arr2=new Array;
for(n of arr1){
  arr2.push(parseInt(n))
}
console.log([...new Set(arr1)]);  //["1", "2", 3, 4, "5", 5, 7, 1, 2, 6, 8]
console.log([...new Set(arr2)]);  //[1, 2, 3, 4, 5, 7, 6, 8]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值