数组去重

来源:互联网 发布:超图软件 福州软件园 编辑:程序博客网 时间:2024/06/01 07:14

一、ES3方法:

var arr = ['a', 'a', 'b', 'b', 'b', 'c', 'e', 'f', 1, 2, 2, 3, 3, 3];

创建一个空数组与原来数组进行比较

//与前面的数组进行比较(不会改变原数组)function deleteRepeat() {    var result = [];    label: for(var i=0; i<arr.length; i++) {        for(var j=0; j<result.length; j++) {            if(result[j] == arr[i]) {                continue label;            }        }        result.push(arr[i]);    }    return result;}   
//与后面的进行比较(不会改变原数组)function deleteRepeat() {    var result = [];    for(var i = 0; i < arr.length; i++) {        for(var j = i+1; j < arr.length; j++) {            if(arr[i] == arr[j]) {                j = ++i;            }        }        result.push(arr[i]);    }    return result;}
// splice()方法 (会改变原数组)function deleteRepeat() {    for(var i = 0; i < arr.length; i++) {        for(var j = i+1; j < arr.length; j++) {            if(arr[i] == arr[j]) {                arr.splice(j, 1);                j--;            }        }    }    return arr;}
// 利用对象的属性不能重复特点(不会改变原数组)function deleteRepeat() {    var result = [];    var object = {};    for(var i = 0; i < arr.length; i++) {        var t = arr[i];        if(!object[t]) {            result.push(t);            object[t] = true;        }     }    return result;}
// 先排序再去重(只需要进行一次for循环、 会改变原数组)function deleteRepeat() {    var arr1 = arr.sort();    var result = [];    for(var i = 0; i < arr1.length; i++) {        if(arr1[i] != arr1[i+1]) {            result.push(arr1[i]);        }    }    return result;}

二、ES5方法:

利用IndexOf()方法
map()方法或forEach()方法或filter()方法

原创粉丝点击