var array = [2,"2",2,"2"];
// es5 使用filter
function unique(array) {
var obj = {};
return array.filter( (item,index) {
var fullItem = (typeof item + item);
return obj.hasOwnProperty(fullItem) ? false : (obj[fullItem] = true);
});
}
console.log(unique(array)); [2,"2"]
es6 使用Set特性(Set元素只会出现一次,即元素是唯一的)
let unique = (array) => [...new Set(array)]; (...)扩展语句,简单来说就是把数组参数转换为多个对象参数
console.log(unique(array));
es6 Map 本质使用的还是Array.prototype.filter()
unique(array) {
let m = new Map();
return array.filter((item) => !m.has(item) && m.set(item,1));
}
console.log(unique(array));