第一种:利用hash的原理去重即排序
var arr=[1,1,1,2,2,2,55,5,4,4,88];
var brr=[];
//去重复,利用相同下标的多次赋值以最新的为准;
for(var i=0;i<arr.length;i++){
brr[arr[i]]=arr[i];//这个命令主要是去重;因为brr的下标会arr的元素;如果出现元素重复,那么视为下标相同;
}
console.log(brr);//此时得到数组是一个被扩大化的索引数组,所以我们要重新处理取出有效元素形成新数组
var crr=[];
for(var j=0;j<arr.length;j++){
if(brr[j]!=undefined){
crr.push(brr[j]);
}
}
console.log(crr);
brr=null;
第二种:利用splice来进行数组去重
var arr=[1,1,1,2,2,2,55,5,4,4,88];
for(var n=0;n<arr.length;n++){
for(var j=arr.length;j>n;j--){
if(arr[n]==arr[j]){
arr.splice(j,1)
}
}
}
console.log(arr)
第三种:以hash数组天然去重的特性;我们需要将索引数组arr转化为hash数组;
var arr=[1,1,1,2,2,2,55,5,4,4,88];
var nrr=[];
for(var n=0;n<arr.length;n++){
nrr["n"+arr[n]]=arr[n];//此时得到的是一个hash数组;
}
console.log(nrr);
arr=[];
//转化为做引数组;
for(var key in nrr){
arr.push(nrr[key]);
}
console.log(arr);
第四种:最简式的一种;两两对比;去除不相同的元素;
var arr=[1,1,1,2,2,2,55,5,4,4,88];
var brr=[];
for(var i=0;i<arr.length;i++){
if(arr[i]!=arr[i+1]){
brr.push(arr[i]);
}
}
console.log(brr);