数组去重的几种方法总结

1.es6的new Set()

用法:需要先把数组转成字符串,因为new Set()里面需要接收的是strings类型;

然后利用set成员值唯一的特性去重。

注意:这个可能会比较消耗性能

 const list1 =[" { name: '张三', age: 18, address: '北京' }"," { name: '张三', age: 18, address: '北京' }"]
 console.log('去重',new Set(list1))//{" { name: '张三', age: 18, address: '北京' }"}

 2.用for循环遍历每一项,然后用一个新数组接收它,再用inclueds判断是否存在当前数组中,

var arr1 = [];
for(let i=0;i<arr.length;i++){
	if(!arr1.includes(arr[i])){
		arr1.push(arr[i])
	}
}
console.log(arr1)

3.用foreach映射

				let newObj:{ [name: string]: boolean } = {};
				let filterOps:Array<T> = [];
		   	mergeList.forEach((item)=>{
				if(!newObj[item.value]) {
					filterOps.push(item);
					newObj[item.value] = true;
			  }

4.reduce()

let arr = [1,1,2,3,4,5,5,6]
let arr2 = arr.reduce(function(ar,cur) {
  if(!ar.includes(cur)) {
    ar.push(cur)
  }

  return ar
},[])

5.filter()

// 这种方法会有一个问题:[1,'1']会被当做相同元素,最终输入[1]
let arr = [1,1,2,3,4,5,5,6]
let arr2 = arr.filter(function(item,index) {
  // indexOf() 方法可返回某个指定的 字符串值 在字符串中首次出现的位置
  return arr.indexOf(item) === index
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值