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

javascript数组去重的四种方法

2016-05-19 18:02 591 查看

一:循环比较

Array.prototype.unique1 = function() {
var res = [this[0]];
for (var i = 1; i < this.length; i++) {
var repeat = false;
for (var j = 0; j < res.length; j++) {
if (this[i] === res[j]) {
repeat = true;
break;
}
}
if (!repeat) {
res.push(this[i]);
}
}
return res;
}
var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
alert(arr.unique1());


二:indexof方法

Array.prototype.unique2 = function(){
var n = []; //一个新的临时数组
for(var i = 0; i < this.length; i++) //遍历当前数组
{
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if (n.indexOf(this[i]) == -1){
n.push(this[i]);
}
}
return n;
}


三:方法比上面的方法效率要高,但是改变了数组的排列顺序

Array.prototype.unique3 = function() {
this.sort(); //先排序
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]
alert(arr.unique3());


四:推荐写法

Array.prototype.unique4 = 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 = [112, 112, 34, '你好', 112, 112, 34, '你好', 'str', 'str1'];
alert(arr.unique4());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript