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>
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: PHP----fwrite(a+,w+)
- 下一篇: HTML5----响应式(自适应)网页设计