数组去重
1、ES6去重方法:
I、使用Set
Array.from() 方法从一个类似数组或可迭代的对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等) 中创建一个新的数组实例
function unique (arr) {
return Array.from(new Set(arr))
}
这种方法无法去掉“{}”空对象
例如:[1,2,3,'1',1,null,null,{}]
II、使用Map
Map 对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。
function unique(arr) {
const res = new Map();
return arr.filter((a) => !res.has(a) && res.set(a, 1))
}
2、使用对象去重,对象的key值唯一性
let arr = ['1','2',11,3,3,4,5,4];
let obj = {};
for (let item of arr){
obj[item]=item;
}
let uniqueArr = Object.valueof(obj);
3、for循环
function unique(arr) {
var rets = [];
for (var i = 0; i < arr.length; i ++) {
if (!rets.includes(arr[i])) {
rets.push(arr[i]);
}
}
return rets;
}
// 方法二: forEach方法实现
function unique(arr) {
var rets = [];
arr && arr.forEach(function(item){
if (!rets.includes(item)){
rets.push(item);
}
});
return rets;
}