js里花里胡哨的各种数组去重的方法

我们调用一个数组的时候有时候只做记录出现过哪些数,这个时候重复出现的就可以排除掉,例如通过摄像头拍摄的画面来记录有多少人通过,重复拍到的人也只能算一个。这个时候就要排除掉重复出现的元素,这就是数组去重的概念。

有许多中方法可以做到数组去重的目的,我们一个一个来解析他们。

第一种方法:创建空数组result,装arr中不重复的值,重复的值保留一个

把从第一个数组里拿出来的元素与新数组里的每一个元素做比较,没有相等的即为新数组里没有这个元素,将它传入新数组中,再从第一个数组中拿第二个元素,循环

function web(arr){
for (var i = 0,result=[]; i < arr.length; i++) {
				//遍历数组arr
				for (var j = 0; j <result.length; j++) {
					//令arr中的值与result的值作比较,相等则开始下一个循环,不等就出循环
					if (arr[i]==result[j]) {
						break;
					}				
				}
				//如果result里没有与arr[i]相等的值 就把arr[i]加入result中
			if (result.length==j) {
				result[result.length]=arr[i];
				}
			}//返回result的值
			return result;
			 }//var arr=[1,3,3,3,5,5,4,8,9,7];
			console.log(web([1,3,3,3,5,4,5,8,9]));

第二种方法:第一步一样页数创建空数组result,另外再创建一个hash数组,这个数组的下标就是第一个数组的元素

第一个数组的元素就是hash数组的下标,满足这个条件的,就把这个下标元素传入数组result,重复添加元素,判断

function web2(arr){
				//创建一个hash数组 一个用来放arr里不重复的元素的数组arr1,
			for (var i = 0,hash=[],arr1=[]; i < arr.length; i++) {
				//arr里的元素为hash数组的下标 
				if (hash[arr[i]]===undefined) {
					//将满足条件的元素传入arr1
					arr1[arr1.length]=arr[i];
					//给hash数组添加元素
					hash[arr[i]]='';
				}
			}return arr1;//返回去重的数组
			}console.log(web2([1,3,3,3,5,5,4,8]));

第三种方法和第四种方法:这里用到的是ES6的知识,是属于新的方法

function web3(arr) {
    		return Array.from(new Set(arr))
		}
		console.log(web3([1,2,2,2,2,2,2,3,5]));

		function web4(arr) {
    		const res = new Map();
    		return arr.filter((a) => !res.has(a) && res.set(a, 1))
		}
		console.log(web4([1,2,2,2,2,2,2,3,5,6,7,8]));

代码的量是一种比一种少,这也证明了技术的发展带来的是越来便利,再达到目标需求的前提,精简代码的量就是新技术的作用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值