例如:
uniq([1, 2, 3, 5, 3, 2]);//[1, 2, 3, 5]
1、利用ES6新增数据类型Set
Set类似于数组,但是成员的值都是唯一的,没有重复的值。
function uniq(arry){
return [...new Set(arry) ];
}
2、利用indexOf
function uniq(arry){
var result = [];
for(var i = 0,len = arry.length; i < len;i++){
if( result.indexOf(arry[i]) === -1 ){
result.push(arry[i]);
}
}
return result;
}
3、利用includes
function uniq(arry){
var result = [];
for(var i = 0,len = arry.length; i < len;i++){
if( !result.includes(arry[i]) ){
result.push(arry[i]);
}
}
return result;
}
4、利用reduce
function uniq(arry){
return arry.reduce( (prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[] );
}
5、利用Map
function uniq(arry){
let map = new Map();
let result = [];
for(var i = 0,len = arry.length; i < len;i++){
if( map.has(arry[i]) ){
map.set(arry[i],true);
}else{
map.set(arry[i],false);
result.push(arry[i]);
}
}
return result;
}