JavaScript数组去重方法

1. ES6 Set实现去重 (ES6最常用)

	let unique = (arr) => [...new Set(arr)]

2. indexOf实现去重

 	let array = [8, 8, '8','9'];
		
	function unique(array) {
	   var res = [];
	    for (let i = 0, len = array.length; i < len; i++) {
	        let current = array[i];
	        if (res.indexOf(current) === -1) {
	            res.push(current)
	        }
	    }
	    return res;
	}
		
	console.log(unique(array));

3. filter实现去重

	let array = [1, 2, 1, 1, '1'];
		function unique(array) {
		    let res = array.filter(function(item, index, array){
		        return array.indexOf(item) === index;
		    })
		    return res;
		}
	console.log(unique(array));

4. 双层for循环实现去重

	function unique(arr){            
	        for(let i=0; i<arr.length; i++){
	            for(let j=i+1; j<arr.length; j++){
	                if(arr[i]==arr[j]){         //第一个等同于第二个,splice方法删除第二个
	                    arr.splice(j,1);
	                    j--;
	                }
	            }
	        }
	return arr;
	}

5.includes实现去重

	function unique(arr) {
	    if (!Array.isArray(arr)) {
	        console.log('type error!')
	        return
	    }
	    let array =[];
	    for(let i = 0; i < arr.length; i++) {
	            if( !array.includes( arr[i]) ) {//includes 检测数组是否有某个值
	                    array.push(arr[i]);
	              }
	    }
	    return array
	}

6.hasOwnProperty实现去重

	function unique(arr) {
	    var obj = {};
	    return arr.filter(function(item, index, arr){
	        return obj.hasOwnProperty(typeof item + item) ? false : (obj[typeof item + item] = true)
	    })
	}
PS:未来的你,一定会感谢今天拼命努力的自己!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值