Js中去除数组中重复元素的几种方法
方法1:
1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(arr.indexOf(this[i]) == -1){ 5 arr.push(this[i]); 6 } 7 } 8 return arr; 9 }
方法2:
1 Array.prototype.method2 = function(){ 2 var h{}; //定义一个hash表 3 var arr[]; //定义一个临时数组 4 5 for(var i = 0; i < this.length; i++){ //循环遍历当前数组 6 //对元素进行判断,看是否已经存在表中,如果存在则跳过,否则存入临时数组 7 if(!h[this[i]]){ 8 //存入hash表 9 h[this[i]] = true; 10 //把当前数组元素存入到临时数组中 11 arr.push(this[i]); 12 } 13 } 14 return arr; 15 }
方法3:
1 Array.prototype.method3 = function(){ 2 //直接定义结果数组 3 var arr[this[0]]; 4 for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历此数组 5 //对元素进行判断: 6 //如果数组当前元素在此数组中第一次出现的位置不是i 7 //那么我们可以判断第i项元素是重复的,否则直接存入结果数组 8 if(this.indexOf(this[i]) == i){ 9 arr.push(this[i]); 10 } 11 } 12 return arr; 13 14 }
方法4:
1 Array.prototype.method4 = function(){ 2 //将数组进行排序 3 this.sort(); 4 //定义结果数组 5 var arr[this[0]]; 6 for(var i = 1; i < this.length; i++){ //从数组第二项开始循环遍历数组 7 //判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组 8 if(this[i] !== arr[arr.length - 1]){ 9 arr.push(this[i]); 10 } 11 } 12 return arr; 13 14 }