• 微信号:wumiao_357234902
您当前的位置:首页>web前端开发>JavaScript

js数组常用去重的几种方法(includes、sort、indexOf、splice、filter)

作者:Miao 阅读:3807次

includes去重

arr.includes(指定元素(必填),指定索引值(可选,默认值为0)),有值返回true,没有则返回false。

let arr = [-2, 1, 9, -3, -2, 6, 6, 7];
function test(arr) {
	let arrNew = [];
	for (let i = 0, len = arr.length; i < len; i++) {
		if (!arrNew.includes(arr[i])) {
			arrNew.push(arr[i]);
		}
	}
	return arrNew;
}
console.log(test(arr)); // -2, 1, 9, -3, 6, 7

sort去重(默认升序)

let arr = [5, 4, 1, 9, 1, 8, 3, 4, 9, 7, 0];
function test(arr) {
	arr = arr.sort();
	let arrNew = [arr[0]];
	for (let i = 1, len = arr.length; i < len; i++) {
		if (arr[i] !== arr[i - 1]) {
			arrNew.push(arr[i]);
		}
	}
	return arrNew;
}
console.log(test(arr)); // 0, 1, 3, 4, 5, 7, 8, 9

indexOf去重

array.indexOf(item,statt) 返回数组中某个指定的元素的位置,没有则返回-1。

let arr = [1, 0, -1, 0, 1, 8, 3, 8];
function test(arr) {
	let arrNew = [];
	for (let i = 0, len = arr.length; i < len; i++) {
		if (arrNew.indexOf(arr[i]) === -1) {
			arrNew.push(arr[i]);
		}
	}
	return arrNew;
}
console.log(test(arr)); // 1, 0, -1, 8, 3

splice去重(双for循环,ES5常用)

let arr = [1, 5, 6, 8, 7, 3, 8, 5, 9, 7, 5];
function test(arr) {
	for (let i = 0, len = arr.length; i < len; i++) {
		for (let j = i + 1, len = arr.length; j < len; j++) {
			if (arr[i] === arr[j]) {
				arr.splice(j, 1);
				j--;
			}
		}
	}
	return arr;
}
console.log(test(arr)); // 1, 5, 6, 8, 7, 3, 9

filter去重

let arr = [1, 2, 8, 9, 9, 8, 3, 2, 5];
function test(arr) {
	return arr.filter(function(item, index) {
		return arr.indexOf(item, 0) === index;
	});
}
console.log(test(arr)); // 1, 2, 8, 9, 3, 5

本站部分文章、数据、素材收集于网络,所有版权均归源网站或原作者所有!

如果侵犯了您的权益,请来信告知我们下线删除,邮箱:357234902@qq.com

标签:JavaScript