js数组去重的方法
来源:互联网 发布:淘宝怎么发布微淘广播 编辑:程序博客网 时间:2024/05/16 08:07
最简单的方法一:
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.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.htmArray.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] //上面这种方法把不该去掉的都去掉了,如果有哪位小伙子用了这方法,我也只能呵呵...了
阅读全文