最简单的方法一:
var arr = [1,2,3,1];//原数组 var arr2 = [];//新数组 for(var i=0;i<arr.length;i++){ //(indexOf本意是找到数组中某个项在数组的索引,如果找不到就会返回-1) if(arr2.indexOf(arr[i]) == -1){//原理:检测如果原数组的每一项在新数组找不到才会添加到新数组就达到了去重的效果。 arr2.push(arr[i]); } } console.log(arr2);
最简单的方法二:当你很任性不想用array.indexOf("item")时
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"]; var anotherArray = []; arr.forEach(function(item,index,oarray){ var isExist = false; // try{ // anotherArray.forEach(function(item1,index1,oarray1){ // if(item1 === item){ // isExist = true; // throw "isExist"; // } // }) // }catch(e){ // // log(e.message); // } for(var i = 0,len=arr.length;i<len;i++){ if(anotherArray[i] === item){ isExist = true; break; } } if(isExist == true){ }else{ anotherArray.push(item); } }) log("anotherArray",anotherArray);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
错误的方法,你们遇到的坑,本帅哥先用力的踩了一遍,请大家珍惜勇于冒险的帅哥哟:
Array.prototype.unique2 = function(){ this.sort(); //先排序,(PS:这是个网上找的一个方法,如果没能正确排序,就会去不了重。我个人不推荐使用) 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; } var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"];//专门对会上面的排序的,哈哈哈! log(arr.unique2());//[0, 1, "1", 1, "15", 15, "a", "b", "d", "e"]
//大家看看网上找的这个方法,分分钟钟要你掉坑里。http://www.jb51.net/article/46154.htm 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 = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0 ,15,"1","15"]; log(arr.unique3());//[1, "a", "b", "d", "e", 0, 15] //上面这种方法把不该去掉的都去掉了,如果有哪位小伙子用了这方法,我也只能呵呵...了