数组去重
对数组进行去重的多种方式
数组去重的两种思路:
- 对原数组进行循环,如果输出数组内没有该元素则追加至输出数组。
- 使用ES6的新数组结构,利用语法自身键不可重复的特性实现去重。
map 循环去重
function unique(arr){
// 如果不是数组则直接返回
if(!Array.isArray(arr)) return;
const outputArr = [];
// 循环输入数组,如果输出数组中没有该元素,则追加至输出数组内
arr.map( (item,index)=>{
if( outputArr.indexOf(item) === -1 ){
outputArr.push( item )
}
});
return outputArr;
}
filter 循环去重
function unique(arr){
if(!Array.isArray(arr)) return;
return arr.filter((item,index,arr)=>{
// 获取元素在数组中第一次出现的位置,如果和自身index相同,则返回 true
return arr.indexOf(item,0) === index;
})
}
Set 去重
ES6 提供了新的数据结构 Set,类似于数组,但是成员不得为重复的值
function unique(arr){
return [...new Set(arr)];
}