js数组去重的方法有很多,例如:new Set()、includes、splice、indexOf、sort、hasOwnProperty、filter...等等,除了ES6Set方法之外,原理都是通过判断新数组是否包含老数组的一项,不包含就添加到新数组中,否则进入下一个循环。

面试题十六:js/javascript数组去重-QUI-Notes

1.Set()方法

Set是es6新增的数据结构,key不能重复,存储任意类型的唯一值。缺点就是不能去空'{}'。
方法一:

let aa = Array.from(new Set(arr))

方法二:

let cc =[...new Set(arr)]

2.includes 方法,检测是否包含指定的子字符串。 匹配成功返回 true,否则返回 false

function unique(arr){
	let newO = [];
	for(let i = 0; i < arr.length; i++){
		if(!newO.includes(arr[i])){
			newO.push(arr[i])
		}
	}
	return newO;
}

3.indexOf 方法,找到匹配项,返回所在的索引

 

function unique(arr){
	let newO = [];
	for(let i = 0; i < arr.length; i++){
		if( newO.indexOf(arr[i]) < 0){
			newO.push(arr[i])
		}
	}
	return newO;
}

剩余的方法不啰嗦了,大致原理都是 符合条件,新增到新数组里面,重复扔掉!