数组去重常用方法(11种)

// 数组去重的对象
var array = {
	// 需要去重的数组
	arrs : [1,2,3,2,3,4,3,5,6,4,5,7,54,34,44,54],
	// 去重以后的新数组
	newarrs : [],
	// 1.双层循环+(开关思想||数组长度)
	arr1 : function(){
		this.newarrs = [];
		for(var i = 0; i < this.arrs.length; i++){
			var flag =  true;
			for(var j = i + 1; j < this.arrs.length; j++){
				if(this.arrs[i] == this.arrs[j]){
					flag = false;
					break;
				}
			}
			// 开关思想
			flag && this.newarrs.push(this.arrs[i]);

			// 数组长度思想
			// j == this.arrs.length && this.newarrs.push(this.arrs[i]);
		}
		return this.newarrs;
	},

	// 2.双层循环+跳出当前循环直接进入下一次外层循环
	arr2 : function(){
		this.newarrs = [];
		for(var i = 0; i < this.arrs.length; i++){
			for(var j = i + 1; j < this.arrs.length; j++){
				if(this.arrs[i] == this.arrs[j]){
					i++;
					j = i + 1;
				}
			}
			this.newarrs.push(this.arrs[i]);
		}
		return this.newarrs;
	},

	// 3.双层循环+splice()(会修改原数组)
	arr3 : function(){
		for(var i = 0; i < this.arrs.length; i++){
			for(var j = i + 1; j < this.arrs.length; j++){
				if(this.arrs[i] == this.arrs[j]){
					this.arrs.splice(j,1);
					j--;
				}
			}
		}
		return this.arrs;
	},

	// 4.关联数组思想||对象思想
	arr4 : function(){
		this.newarrs = [];
		for(var i = 0, obj = {}; i < this.arrs.length; i++){
			if(!obj[this.arrs[i]]){
				obj[this.arrs[i]] = true;
				this.newarrs.push(this.arrs[i]);
			}
		}
		return this.newarrs;
	},

	// 5.数组下标思想:indexOf()
	arr5 : function(){
		this.newarrs = [];
		for(var i = 0; i < this.arrs.length; i++){
			if(this.newarrs.indexOf(this.arrs[i]) === -1){
				this.newarrs.push(this.arrs[i]);
			}
		}
		return this.newarrs;
	},

	// 6.数组排序思想:sort()(会修改原数组)
	arr6 : function(){
		this.newarrs = [];
		this.arrs.sort(function(a,b){
			return a - b;
		});
		for(var i = 0; i < this.arrs.length; i++){
			if(this.arrs[i] !== this.arrs[i+1]){
				this.newarrs.push(this.arrs[i]);
			}
		}
		return this.newarrs;
	},

	// es6
	// includes() 方法用于判断字符串是否包含指定的子字符串。
	// 如果找到匹配的字符串则返回 true,否则返回 false。  区分大小写
	// string.includes(searchvalue, start)
	es6Arr1 : function(){
		this.newarrs = [];
		for(var i = 0, obj = {}; i < this.arrs.length; i++){
			if(!this.newarrs.includes(this.arrs[i])){
				this.newarrs.push(this.arrs[i]);
			}
		}
		return this.newarrs;
	},

	// Array.from() 将类数组装换为数组
	// new Set() 去重
	// 推荐方法
	es6Arr2 : function(){
		this.newarrs = [];
		return Array.from(new Set(this.arrs));
	}
}

// 原型链上书写数组去重
Array.prototype.aaa = function(){
	// 书写数组去重即可
	// 上面的方法都可以
}
发布了43 篇原创文章 · 获赞 3 · 访问量 1138

猜你喜欢

转载自blog.csdn.net/qq_45007419/article/details/103745180