js数组去重的几种方法

在平常实际使用中,数组去重的使用概率还是蛮高都的,有时候经常需要对一些后台数据进行一些处理,下面介绍几种数组

1,利用indexOf和for循环

首先介绍一种,最简单数组去重法如下:

	function unique(arr){
		//定义一个新的临时数组 
		var newArr=[]; 
		 //遍历当前数组 
			for(var i=0;i<arr.length;i++){
			 //如果当前数组的第i已经保存进了临时数组,那么跳过,
			 //否则把当前项push到临时数组里面 
			if(newArr.indexOf(arr[i]) === -1){  //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1 
				 newArr.push(arr[i]);
			}
		 }
		console.log(newArr)
	}
	var arr=[1,1,2,2,3,4,4,4,4,5,5,6]
	console.log(unique(arr))

,2,使用filter()方法进行去重

filter()解释:

filter(数组去重)过滤出数组中你想要的元素, 不改变原数组,
filter()对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,它只对数组中的非空元素执行指定的函数,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。同时,新创建的数组也不会包含这些元素。
关键: indexOf方法总是返回找到的第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

	function unique(arr) {
		return arr.filter((item,index) => {
			console.log(item,index);
			// console.log(arr.indexOf(item)+'---'+index
			// 第一次 cc 索引2 过滤后的索引2
			// 第二次 cc 索引2 过滤后的索引3
			// 后面去重以此类推
			return arr.indexOf(item) == index 
		})
	}
	var arr = ['aa','bb','cc','cc','dd','dd','ee','ee']
	console.log(unique(arr))

3,map(数组去重)

通过指定函数处理数组每个元素,并返回处理后的数组(push)

	function unique(arr) {
	// Array.from方法可以将 Set 结构转为数组。
		var newarr=[];
		arr.map(function(v,i){
		if(arr.indexOf(arr[i])==i){
		 newarr.push(v);
		}
	}
	var arr=[115, 22, 22, 554, 95, 884, 56, 115, 22];
	console.log(unique(arr))

4,利用 Set 和 Array.from 进行数组去重:

	function unique(arr) {
	// Array.from方法可以将 Set 结构转为数组。
		return Array.from(new Set(array));
	}
	var arr = ['aa','bb','cc','cc','dd','dd','ee','ee']	
	console.log(unique(arr))

更多前端实用技术,网络资源可以关注我的博客:大雄搜集站

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值