数组去重的方法

数组去重是什么意思?
看一下这个数组:

var arr=[1,2,3,4,5,1,2,3,4,5,6];

很明显可以看出这个数组有相同的元素,数组去重就是将数组中有相同元素的部分去掉,那么该怎样实现呢?
法1: 利用ES6新增数据类型 Set 不包含重复元素的值的集合 Map 双列集合 键值对 与object的区别 object中的key只能是string类型 而Map是可以任意数据类型

function uniq1(array) {
	    // return [...new Set(array)];                       // new Set(array)  =>  数组    [...数组]   Array.from(set)
	    return [...new Set(array)];//Set数据结构转换成数组   
	}
	function uniq2(array) {
	    return Array.from(new Set(array));//Set数据结构转换成数组    ES6数组的新增方法  Array.from()   Array.of()  
	}
	// console.log(uniq2(array))

法2: 利用 indexOf:

function uniq3(arry) {
	    var result = [];//临时数组  用来存放不包含重复元素的数组
	    for (var i = 0; i < arry.length; i++) {
	        if (result.indexOf(arry[i]) === -1) {
	            //如 result 中没有 arry[i],则添加到数组中
	            result.push(arry[i])
	        }
	    }
	    return result;
	}

 console.log(uniq3(array))

法3: 利用Es7 includes

function uniq4(arry) {
	    var result = [];
	    for (var i = 0; i < arry.length; i++) {
	        if (!result.includes(arry[i])) {
	            //如 result 中没有 arry[i],则添加到数组中
	            result.push(arry[i])
	        }
	    }
	    return result;
	}

	// console.log(uniq4(array))

法4:利用 reduce 适合累加 累乘

function uniq5(arry) {
	    return arry.reduce((prev, cur) => prev.includes(cur) ? prev : [...prev, cur], []);
	}
	 console.log(uniq5(array))

法5:利用 Map

function uniq6(arry) {
		//Map与Object的区别  Object里的属性是字符串    Map里的key可以是任意的数据类型    key:value
	    let map = new Map();
	    let result = new Array();
	    for (let i = 0; i < arry.length; i++) {
	        if (map.has(arry[i])) {
	            map.set(arry[i], true);
	        } else {
	            map.set(arry[i], false);
	            result.push(arry[i]);
	        }
	    }
	    return result;
	}
	console.log(uniq6(array))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值