var arr=[1,2,3,1,2,3,5,6,23,4,2,5,7,9,23,6,5,3,2,21,4,65,3,3,4,6,2,5,7,7]
方法一:i从前到后遍历,j从后到i遍历,去掉相同的j
for(var i=0;i<arr.length;i++){
for(var j=arr.length;j>i;j--){
if(arr[i]===arr[j]){
arr.splice(j,1);
}
}
}
console.log(arr);
方法二:设置一个开关,在两层循环里判断如果有相同的数值就关掉开关,没有相同的打开开关push到数组中,
var newArr=[]
for(var i=0;i<arr.length;i++){
var bool = false
for(var j=0;j<i;j++){
if(arr[i]===arr[j]){
bool=true
break
}
}
if(!bool){
newArr.push(i)
}
}
arr=newArr
newArr=null
console.log(arr)
方法三:直接用indexOf判断新数组是否有这个元素,如果有不进入if,如果没有就push没有的元素
var newArr=[]
for(var i=0;i<arr.length;i++){
if(newArr.indexOf(arr[i])===-1){
newArr.push(arr[i])
}
}
arr=newArr
newArr=null
console.log(arr)
方法4:利用对象的["属性名"],来排除已有的元素,这样未有的元素就可以添加进新数组,
同样可以去重,必须得给obj[arr[i]]一个值,否则每次进入if语句obj[arr[i]]的值都是underfined
var newArr=[]
var obj={}
for(var i=0;i<arr.length;i++) {
if (!obj[arr[i]]) {
obj[arr[i]]=1
newArr.push(arr[i])
}
}
console.log(newArr,obj)
去重并统计重复的个数
var newArr=[]
var obj={}
for(var i=0;i<arr.length;i++) {
if (!obj[arr[i]]) {
obj[arr[i]]=1
}else{
obj[arr[i]]++
}
}
console.log(newArr,obj)