整理数组去重的几种常用方法

66 阅读1分钟

类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数

<script type="text/javascript">
	let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
	let set = new Set(array);
	console.log(set); // => Set {1, 2, 3, 4, 5}
</script>

ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node List,以及ES6中新增的Set和Map等可遍历对象

<script type="text/javascript">
	let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
	console.log(array); // => [1, 2, 3, 4]
</script>

双for循环去重

<script type="text/javascript">
	var ary = [1, 3, 2, 3, 2, 3, 1, 2, 2, 3, 1, 1, 1];
			for (var i = 0; i < ary.length; i++) {
				var cur = ary[i];
				for (var j = i + 1; j < ary.length; j++) {
					if (cur === ary[j]) {
						ary.splice(j, 1);
						j--;
					}
				}
			}
	console.log(ary); // => [1, 3, 2]
</script>

双for循环去重,if{}else{}写法

<script type="text/javascript">
        var ary = [1, 2, 3, 2, 3, 4, 4];
	for (var i = 0; i < ary.length; i++) {
		var cur = ary[i];
		for (var j = i + 1; j < ary.length;) {
			if (cur === ary[j]) {
			    ary.splice(j, 1);
			} else {
				j++;
				}
		}
	}
	console.log(ary) // => [1, 2, 3, 4]
</script>

双for循环三元运算写法

<script type="text/javascript">
	var ary = [3, 4, 4, 5, 6, 5, 6, 6, 3, 3, 5];
	for (var i = 0; i < ary.length; i++) {
		var cur = ary[i];
		for (var j = i + 1; j < ary.length;) {
			cur === ary[j] ? ary.splice(j, 1) : j++;
		}
	}
	console.log(ary) // => [3, 4, 5, 6]
</script>