JS——数组去重

xiaoxiao2021-02-28  8

1、自己写的

//去重 自己写的方法 var arr=[1,'a','k',2,'e','a','e',1,2,3]; Array.prototype.unique=function(){ //设置全1的标志数组 var arr1=new Array(this.length); for(var i=0;i<arr1.length;i++){ arr1[i]=1; } var newArr=[]; for(var i=0;i<arr.length-1;i++){ if(arr1[i]==0) continue; for(var j=i+1;j<arr.length;j++){ if(arr[i]==arr[j]){ arr1[j]=0; } } } for(var i=0;i<arr1.length;i++){ if(arr1[i]==1){ newArr.push(arr[i]); } } return newArr; } var newArr=arr.unique(); console.log(newArr); 2、差不多的笨方法

//去重 var arr=[1,'a',7,2,'e',4,11,'a','e',1,2,3]; Array.prototype.unique=function(){ var len=this.length,newArr=[],flag=1; for(var i=0;i<len;i++,flag=1){ for(var j=0;j<i;j++){ if(this[i]==this[j]){ flag=0; } } flag?newArr.push(this[i]):''; } return newArr; } var newArr=arr.unique(); console.log(newArr); 3、利用indexOf

//去重 var arr=[1,8,'a',7,2,'e',4,'a','e',1,2,3]; //arr1.indexOf(arr[i]) 获得指定数组下指定的元素值的下标索引号 Array.prototype.unique=function(){ var arr1=[]; for(var i=0;i<this.length;i++){ if(arr1.indexOf(this[i])==-1){ arr1.push(this[i]); } } return arr1; } var newArr=arr.unique(); console.log(newArr); 4、利用键值唯一性

//去重 var arr=[1,8,'a',7,2,'e','f',4,'a','e',1,2,3,77]; Array.prototype.unique=function(){ var arr1=[]; for(var i=0;i<this.length;i++){ arr1[this[i]]=1; } var newArr=[]; //利用键值的唯一性 for(var k in arr1){ if(arr1.hasOwnProperty(k)) newArr[newArr.length]=k; } return newArr; } var newArr=arr.unique(); console.log(newArr); 5、利用ES6新特性set

var arr=[1,8,'a',7,2,'e','f',4,'a','e',1,2,3,77]; Array.prototype.unique=function(){ var set=new Set(this); var newArr=[]; for(let v of set){ newArr[newArr.length]=v; } return newArr; } var newArr=arr.unique(); console.log(newArr);

转载请注明原文地址: https://www.6miu.com/read-2250099.html

最新回复(0)