数组去重及for循环嵌套的学习
方法一思路(包含for循环嵌套)
1.构建一个新的数组存放结果
2.for循环每次从数组中取出一个元素,用这个元素与结果数组对比
3.若结果数组中没有该元素,则存到结果数组中
Array.prototype.unique1 = function(){ var res = this[0]; for(var i=1; i<this.length; i++){ var repeat = false; for(var j=0; j<res.length; i++){ if(res[j]==this[i]){ repeat = true; break; } } if(!repeat){ res.push(this[i]); } } return res; } var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]; alert(arr.unique1());
方法二
1.现将原数组进行排序
2.检查原数组中的第i个元素与结果数组中的最后一个
元素是否相同,因为已经排序,所以重复元素会在
相邻位置
3.如果不相同,则将该元素存入结果数组中
Array.prototype.unique2 = function(){ this.sort(); var res = [this[0]]; for(var i=1; i<this.length; i++){ if(this[i]!==res[res.length-1]){ res.push(this[i]); } } return res; }
方法三
1.创建一个新的数组存放结果
2.创建一个空对象
3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。
Array.prototype.unique3 = function(){ var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res; } var arr = [112,112,34,'你好',112,112,34,'你好','str','str1']; alert(arr.unique3());

浙公网安备 33010602011771号