您的位置:首页 > Web前端 > JavaScript

整理 javascript 去除数组中重复项的几种方法

2013-12-12 16:18 525 查看
<script>

//方法一(说明:只限定数字,不支持字符)

function regArrayA(arr) {

var array = arr;

var o = {};

for (var i = 0; i < array.length; i++) {

o[array[i]] = array[i];

}

array = [];

for (var el in o) {

if (el == o[el]) {

array.push(el - 0);

}

}

return array;

}

//方法二:(有BUG)

function regArrayB(arr) {

return arr.reverse().join(",").match(/([^,]+)(?!.*\1)/ig).reverse();

}

//方法三:

function regArrayC(arr) {

var obj = {}, temp = [];

for (var i = 0; i < arr.length; i++) {

if (!obj[arr[i]]) {

temp.push(arr[i]);

obj[arr[i]] = true;

}

}

return temp;

}

//方法四:

function regArrayD(arr) {

var str = [];

for (var i = 0; i < arr.length; i++) {

!RegExp(arr[i], "g").test(str.join(",")) && (str.push(arr[i]));

}

return str;

}

//方法五

function regArrayE(arr) {

var o = {}, newArr = [];

for (var i = 0; i < arr.length; i++) {

if (typeof (o[arr[i]]) == "undefined") {

o[arr[i]] = "";

}

}

for (var j in o) {

newArr.push(j)

}

return newArr;

}

//方法六

function regArrayF(arr) {

var a = [], b = [];

for (var prop in arr) {

var d = arr[prop];

if (d === a[prop]) continue; //防止循环到prototype

if (b[d] != 1) {

a.push(d);

b[d] = 1;

}

}

return a;

}

//方法七(支持不同的类型区分)

function regArrayG(array) {

var ret = [], record = {}, it, tmp, obj = "__object__", bak = [], i, len;

var type = {

"number": function (n) { return "__number__" + n; },

"string": function (n) { return "__string__" + n; },

"boolean": function (n) { return "__boolean__" + n; },

"undefined": function (n) { return "__undefined__"; },

"object": function (n) {

return n === null ? "__null__" : obj in n ? n[obj] : (n[obj] = obj + bak.push(n));

}

};

for (i = 0, len = array.length; i < len; i++) {

it = array[i]; tmp = type[typeof it](it);

if (!(tmp in record)) { ret.push(it); record[tmp] = true; }

}

for (i = 0, len = bak.length; i < len; delete bak[i++][obj]) { }

return ret;

};

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 'a', 'b', 'c', 'a', 'b', -1, -2, -3, -2, -1, 0.1, 0.2, 0.3, 0.2, 0.1, '1', '2', '3', '3', '4'];

alert("regArrayA:" + regArrayA(arr));

alert("regArrayB:" + regArrayB(arr));

alert("regArrayC:" + regArrayC(arr));

alert("regArrayD:" + regArrayD(arr));

alert("regArrayE:" + regArrayE(arr));

alert("regArrayF:" + regArrayF(arr));

alert("regArrayG:" + regArrayG(arr));

</script>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: