js 数组去重

来源:互联网 发布:伯克利吉他教程 知乎 编辑:程序博客网 时间:2024/05/01 15:42
function unique(arr) {    var result = [], isRepeated;    for (var i = 0, len = arr.length; i < len; i++) {        isRepeated = false;         for (var j = 0, len1 = result.length; j < len1; j++) {             if (arr[i] == result[j]) {                  isRepeated = true;                 break;             }         }         if (!isRepeated) {             result.push(arr[i]);         }     }     return result;}

创建一个新的数组,循环原有的数组,每取一个数就循环判断新建的数组中是否有和这个相等的值,没有则插入。方法简单,但是有双重循环,数组大了之后效率低。

所以能一次循环解决最好。

var str = new Array();str.push('aa');str.push('bb');str.push('aa');str.push('cc');str = unique(str);str = str.join('-');alert(str);function unique(arr){var res = [],check = [];for(var i = 0,len = arr.length; i < len ; i++){if(!check[arr[i]]){res.push(arr[i]);check[arr[i]] = true;}}return res;}
这种方法是每次循环的时候,就在一个数组中记录一下该值是否记录过,没有记录过就放入新的数组中,通过放入下标即数据结构的方式进行判断,效率高且循环少。

0 0