需要去重的数组
var arr= [2,4,5,2,3,4,2,4,4,5,6,7,2,8];
1.js第三方库
https://underscorejs.net/这是小编用的比较好用的js第三方库,大家可以看一下,也还有很多第三方库可以实现数组去重,有兴趣了解的可以百度
//1.调用第三方库
function getUniqueArray() {
var result = _.uniq(arr)
console.log(result)
}
2.利用es6后的set集合
//2.利用es6的特性
function getUniqueArray(){
//new Set(arr)返回的是一个不重复的对象
//Array.from将对象变化为数组
// var result = Array.from(new Set(arr));
// var result = [...new Set(arr)];
console.log(result)
}
3.利用es6的filter拦截方法
//4.利用es6的filter拦截方法
function getUniqueArray(){
var result = arr.filter((item,index)=>{
return arr.indexOf(item) == index;
});
console.log(result)
}
4.利用es6的reduce方法
4.利用es6的reduce方法
function getUniqueArray(){
var result = arr.reduce((pre,item)=>{
return pre.includes(item)?pre:[...pre,item]
},[]);
console.log(result)
}
5.利用对象的key值不能重复
5.利用对象的key值不能重复
function getUniqueArray(){
var result = {}
arr.forEach((item,index)=>{
result[arr[index]]='sss'
})
result = Object.keys(result).map(item=> ~~item);
console.log(result)
}
6.foreach遍历
function getUniqueAraay(){
var result = [];
arr.forEach(item=>{
//遍历arr数组,判断result是否存在该元素,存在就返回下标,不存在就返回-1,
// 通过是否存在下标来判断有没有该元素
//没有就push,有就跳过
if(result.indexOf(item) == -1){
result .push(item)
}
})
console.log(result)
}
7.原生的for循环
function getUniqueArray() {
var result = [];
for (let i =0;i<arr.length;i++){
var flag=true
for(let k=0;k<result.length;k++){
if(arr[i]==result[k]){
flag = false
}
}
if(flag == true) {
result.push(arr[i])
}
}
console.log(result)
}
8.通过排序,在比较相邻元素
//8.先排序,再判断相邻的两个元素是否相等,不相等就push
function getUniqueArray() {
var result = [];
var temp = arr.sort();
for(let i =0; i<temp.length;i++){
if(temp[i]!=temp[i+1]){
result.push(arr[i])
}
}
console.log(result)
}