JS----几种过滤重复的数组的方法
个人总结的三种过滤重复的数组的方法
方法1:
<script> function unique(target) { var result = []; loop: for (var i = 0, n = target.length; i < n; i++){ for (var x = i + 1; x < n; x++) { if (target[x] === target[i]) continue loop; } result.push(target[i]); } return result; } var arr = ["a","b","b","c",1,2,2,3] alert(unique(arr)); //a,b,c,1,2,3 </script>
方法2:
<script> Array.prototype.distinct = function () { var newArr = [],obj = {}; for(var i=0, len = this.length; i < len; i++){ if(!obj[typeof(this[i]) + this[i]]){ newArr.push(this[i]); obj[typeof(this[i]) + this[i]] = "new"; } } return newArr; } var arr =["a","b","b","c"]; alert(arr.distinct()); </script>
方法3:
<script> Array.prototype.distinct = function () { var sameObj = function(a, b){ var tag = true; if(!a || !b) return false; for(var x in a){ if(!b[x]) return false; if(typeof(a[x]) === "object"){ tag = sameObj(a[x],b[x]); } else { if(a[x]!==b[x]) return false; } } return tag; } var newArr = [], obj = {}; for(var i = 0, len = this.length; i < len; i++){ if(!sameObj(obj[typeof(this[i]) + this[i]], this[i])){ newArr.push(this[i]); obj[typeof(this[i]) + this[i]] = this[i]; } } return newArr; } //一维数组 var arr =["a","b","b","c"]; alert(arr.distinct()); //关联数组 var arr=[{name:"tom",age:12},{name:"lily",age:22},{name:"lilei",age:12}]; var newArr=arr.distinct(function(ele){ return ele.age; }); alert("重复项:"+newArr[0]["age"]) </script>
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 增强for循环和可变长度数组
- 下一篇: javascript过滤数组中重复的元素