在js实际应用中会用到数组去重,那么应该怎样实现去重呢?
方法1:
var arr = [1,1,1,2,3,3,2,1,1,1] // var obj = { // "1":"avb" // } Array.prototype.unique = function(){ var temp ={}; var arr = []; for(var i = 0;i < this.length ; i++){ if(!temp[this[i]]){ temp[this[i]] = 'abc'; arr.push(this[i]) } } return arr } console.log(arr.unique());//结果为 [1,2,3]
方法2: 利用hash哈希表(推荐)
var arr = [1,1,1,2,3,3,2,1,1,1]
Array.prototype.unique2 = function () { var hash = [], n = [];//hash 哈希表,n 为临时数组 for(var i = 0; i < this.length; i ++){ if(!hash[this[i]]){ hash[this[i]] = true;//存入哈希表 n.push(this[i]);//当前元素push到数组中 } } return n } console.log(arr.unique2())
方法3
var arr = [1,1,1,2,3,3,2,1,1,1] Array.prototype.unique = function () { var arr = []; for(var i = 0; i < this.length;i++){ if(arr.indexOf(this[i]) == -1){ arr.push(this[i]) } } return arr } console.log(arr.unique())