1、方法一:双层循环,外层循环元素,内层循环做比较,若相同则跳过,不同则加入结果集中,获取没重复的最右侧的值放入数组中
Array.prototype.distinct = function(){ var arr = this; var result = []; var len = arr.length; for(var i=0;i
2、方法二:利用splice直接在原数组中删除
Array.prototype.distinct = function(){ var arr = this, len = arr.length; for(var i=0;i
3、方法三:利用对象属性不能重复的特点去重
Array.prototype.distinct = function(){ var arr = this; var len = arr.length; var obj = {} var result = [] for(var i =0 ;i
4、方法四:利用数组进行排序
Array.prototype.distinct = function(){ var arr = this; var len = arr.length; arr.sort(function(a,b){ return a-b; }) function loop(index){ if(index>=1){ if(arr[index] === arr[index-1]){ arr.splice(index,1) } loop(index-1) } } loop(len-1) return arr;}
5、方法五:遍历数组,利用indexOf判断
Array.prototype.distinct = function(){ var arr = this; var len = arr.length; var result = []; arr.forEach(function(currentVal,index,arr){ //arr.map(function(currentVal,index,arr){ var loop = result.indexOf(currentVal) if(loop === -1){ result.push(currentVal) } }) return result}
6、方法六:es6的set数据结构,set成员都是唯一的,Array.form可以将set类型转化为数组
Array.prototype.distinct = function(){ return Array.from(new Set(this)) //或者使用es6的三点运算符转化为数组 [...new Set(this)]}