1 数组去重
方法1 思路:将数组先排序 相同的元素排在一起,然后找一个对比项,从头开始对比 相同的则删除 不同则将不同的作为对比项继续对比
var arr=[2,6,9,1,3,4,8,1,2,6,6,3,8,5]
function test(arr) {
arr=arr.sort();//[1,1,2,2,3,3,4,,5,6,6,6,,8,8,9]
var flag=arr[0]
for(i=1;i<arr.length;i++){
debugger
if(flag==arr[i]){
arr.splice(i,1)
i--//因为删除了数组的一项 长度随之减一,遍历下一项i++之前要先--
}else{
flag=arr[i]
}
}
console.log(arr)//[1,2,3,4,5,6,8,9]
}
test(arr)
方法2 思路:借助一个新的空数组作为容器,将要去重的数组的数据依次放入这个新数组中,每次放之前先遍历一下 看看新数组是否有这个数据,有就不放,没有就放
var arr=[2,6,9,1,3,4,8,1,2,6,6,3,8,5]
function test(arr) {
var result=[arr[0]]//先把数组第一项放进来,遍历时就不用遍历第一项了 直接从第二项开始遍历
for(var i=1;i<arr.length;i++){
if(exist(arr[i])){
continue
}else{
result.push(arr[i])
}
}
function exist(flag) {
for(var i=0;i<result.length;i++){
if(flag==result[i]){
return true
}
}
return false
}
return result
}
console.log(test(arr))
方法3 思路借助json的key不能重复这一特点进行解题(一般字符串去重 数组去重 都可以用这一思想解决) 我们创建一个json对象遍历数组,把遍历的元素加入到json上,key和value都是数组当前元素 , 这样遍历完一遍生成的json的key就是不重复的数组元素了,再遍历json,将key加入到一个新数组中,新数组就是我们要求的去重后的结果了
var arr=[2,6,9,1,3,4,8,1,2,6,6,3,8,5]
function test(arr) {
var result=[];
var obj={}
for(var i=0;i<arr.length;i++){
if(!obj[arr[i]]){
obj[arr[i]]=arr[i]
}
debugger
}
console.log(JSON.stringify(obj))
for(var e in obj){
result.push(e)
}
return result
}
console.log(test(arr))//[1,2,3,4,5,6,8,9]
方法4 借助es6 set set是不可重复的集合
var array=[1,2,3,4,5,4,3,2,2,2,3,3,4,5]
var set=new Set([...array])
console.log(new Array([...set]))