闲来无事,总结一下数组去重的各种思路。当然去重有很多种方法,这里只写几个相对简洁的思路。
基本思路
做一个空数组A,遍历数组,若A中不存在则放入A
function uniqueArray (arr) {
let result = [];
arr.map(item => {
if(!result.includes(item)) {
result.push(item);
}
});
return result
}
用对象去重
利用对象属性不会重复的特性来去重。但这样去重之后的结果,会把数组变为字符串,并改变顺序(排序)
function uniqueArray (arr) {
let map = {};
arr.map(item => {
if(!map[item]) {
map[item] = item;
}
});
return Object.keys(map)
}
使用set去重
利用ES6中Set不包含重复元素的思想,为数组创建set对象,再将set对象转换为数组。
function uniqueArray (arr) {
return Array.from(new Set(arr));
}