原生JS实现数组去重

版权声明:转载请注明出处 https://blog.csdn.net/Cathence/article/details/82835051

1. for循环 + indexOf

function fun(arr) {
	var newArr = [];
	for (var i = 0; i < arr.length; i++) {
		if (newArr.indexOf(arr[i]) == -1) {
			newArr.push(arr[i]);
		}
	}
	return newArr;
}
console.log(fun([1,3,4,5,3,1,6,6,7,9]));
//(7) [1, 3, 4, 5, 6, 7, 9]

2. forEach + IndexOf

function fun(arr) {
	var array = [];
	arr.forEach(function(value, index) {
		if (array.indexOf(value) < 0) {
			array.push(value);
		}
	}, this);
	return array;
}
console.log(fun([1,3,4,5,3,1,6,6,7,9]));
//(7) [1, 3, 4, 5, 6, 7, 9]

3. indexOf和lastIndexOf

function fun(arr) {
	for (var i = 0; i < arr.length; i++) {
		if (arr.indexOf(arr[i]) !== arr.lastIndexOf(arr[i]) {
			arr.splice(i, 1);
		}
	}
	return arr;
}
console.log(fun([1,3,4,5,3,1,6,6,7,9]));
//(7) [3, 4, 5, 1, 6, 7, 9]

4. for…in… +indexOf

function fun(arr) {
	var newArr = [];
	for (var key in arr) {
		if (newArr.indexOf(arr[key]) == -1) {
			newArr.push(arr[key]);
		}
	}
	return newArr;
}
console.log(fun([1,3,4,5,3,1,6,6,7,9]));
//(7) [1, 3, 4, 5, 6, 7, 9]

5. 利用ES6的set()方法

function fun(arr) {
	return Array.form(new Set());
}
console.log(fun([1,3,4,5,3,1,6,6,7,9]));
//(7) [1, 3, 4, 5, 6, 7, 9]

整理自:牛客网

猜你喜欢

转载自blog.csdn.net/Cathence/article/details/82835051
今日推荐