JS——数组去重

来源:互联网 发布:用友软件t3标准版 编辑:程序博客网 时间:2024/06/06 03:18

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);