在平常实际使用中,数组去重的使用概率还是蛮高都的,有时候经常需要对一些后台数据进行一些处理,下面介绍几种数组
1,利用indexOf和for循环
首先介绍一种,最简单数组去重法如下:
function unique(arr){
//定义一个新的临时数组
var newArr=[];
//遍历当前数组
for(var i=0;i<arr.length;i++){
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if(newArr.indexOf(arr[i]) === -1){ //indexOf() 判断数组中有没有字符串值,如果没有则返回 -1
newArr.push(arr[i]);
}
}
console.log(newArr)
}
var arr=[1,1,2,2,3,4,4,4,4,5,5,6]
console.log(unique(arr))
,2,使用filter()方法进行去重
filter()解释:
filter(数组去重)过滤出数组中你想要的元素, 不改变原数组,
filter()对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组,它只对数组中的非空元素执行指定的函数,该数组元素是所有回调函数执行时返回值为 true 的原数组元素。同时,新创建的数组也不会包含这些元素。
关键: indexOf方法总是返回找到的第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。
function unique(arr) {
return arr.filter((item,index) => {
console.log(item,index);
// console.log(arr.indexOf(item)+'---'+index
// 第一次 cc 索引2 过滤后的索引2
// 第二次 cc 索引2 过滤后的索引3
// 后面去重以此类推
return arr.indexOf(item) == index
})
}
var arr = ['aa','bb','cc','cc','dd','dd','ee','ee']
console.log(unique(arr))
3,map(数组去重)
通过指定函数处理数组每个元素,并返回处理后的数组(push)
function unique(arr) {
// Array.from方法可以将 Set 结构转为数组。
var newarr=[];
arr.map(function(v,i){
if(arr.indexOf(arr[i])==i){
newarr.push(v);
}
}
var arr=[115, 22, 22, 554, 95, 884, 56, 115, 22];
console.log(unique(arr))
4,利用 Set 和 Array.from 进行数组去重:
function unique(arr) {
// Array.from方法可以将 Set 结构转为数组。
return Array.from(new Set(array));
}
var arr = ['aa','bb','cc','cc','dd','dd','ee','ee']
console.log(unique(arr))
更多前端实用技术,网络资源可以关注我的博客:大雄搜集站