JavaScript 数组去重的多种方法

			var arr = [1, 1, 2, 3, 4, 4, 4, 5, 2, 3, 4, 5, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0];
			//第一种
			function uniqueArr1(array) {
				var obj = {},
					arrtmp = [];
				for (var val in array) {
					if (!obj.hasOwnProperty(array[val])) {
						obj[array[val]] = array[val];
						arrtmp.push(array[val]);
					}
				}
				return arrtmp;
			}
			console.log(uniqueArr1(arr))

			//第二种
			function uniqueArr2(array) {
				var _arr = [],
					isRepeat;
				for (var i = 0; i < array.length; i++) {
					isRepeat = false;
					for (var j = 0; j < _arr.length; j++) {
						if (array[i] == _arr[j]) {
							isRepeat = true;
							break;
						}
					}
					if (!isRepeat) {
						_arr.unshift(array[i]);
					}
				}
				return _arr;
			}
			console.log(uniqueArr2(arr))

			//第三种
			function uniqueArr3(array) {
				var _arr = [],
					isRepeat;
				for (var i = 0; i < array.length; i++) {
					isRepeat = false;
					for (var j = i + 1; j < array.length; j++) {
						if (array[i] == array[j]) {
							isRepeat = true;
							break;
						}
					}
					if (!isRepeat) {
						_arr.unshift(array[i]);
					}
				}
				return _arr;
			}
			console.log(uniqueArr3(arr))

			//第四种
			function uniqueArr4(array) {
				return array.filter(function(item, index) {
					return array.indexOf(item) === index;
				});
			}
			console.log(uniqueArr4(arr))

			//第五种
			function uniqueArr5(array) {
				var _arr = [];
				array.forEach(function(item) {
					if (_arr.indexOf(item) === -1) {
						_arr.push(item);
					}
				});
				return _arr;
			}
			console.log(uniqueArr5(arr));

			//第六种
			function uniqueArr6(array) {
				var _arr = [];
				array.sort();
				for (var i = 0; i < array.length; i++) {
					if (array[i] !== array[i + 1]) {
						_arr.push(array[i]);
					}
				}
				return _arr;
			}
			console.log(uniqueArr6(arr))

			//第七种
			function uniqueArr7(array) {
				var _arr = [];
				array.sort();
				for (var i = 0; i < array.length; i++) {
					if (array[i] !== _arr[_arr.length - 1]) {
						_arr.push(array[i]);
					}
				}
				return _arr;
			}
			console.log(uniqueArr7(arr))

			//第八种 includes
			function uniqueArr8(array) {
				var _arr = [];
				array.forEach(function(item) {
					if (!_arr.includes(item)) {
						_arr.push(item);
					}
				});
				return _arr;
			}
			console.log(uniqueArr8(arr))

			//第九种 
			function uniqueArr9(array) {
				return array.sort().reduce(function(prev, item) {
					if (prev.length === 0 || prev[prev.length - 1] !== item) {
						prev.push(item);
					}
					return prev;
				}, []);
			}
			console.log(uniqueArr9(arr))

			//第十种
			function uniqueArr10(array) {
				return arr.reduce(function(prev, next) {
					prev.indexOf(next) == -1 && prev.push(next);
					return prev;
				}, [])
			}
			console.log(uniqueArr10(arr))

			//第十一种
			function uniqueArr11(array) {
				var _arr = [];
				_temp = new Map();
				for (var i = 0; i < array.length; i++) {
					if (!_temp.get(array[i])) {
						_temp.set(array[i], 1);
						_arr.push(array[i]);
					}
				}
			}
			console.log(uniqueArr11(arr))
			//第十二种
			function uniqueArr12(array) {
				return Array.from(new Set(array));
			}
			console.log(uniqueArr12(arr))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值