js 数组去重
这是一道常见的面试题,最近在做【搜索历史记录】功能也用到,开始用了 indexOf 方法,该方法在 ECMA5才有支持,对于 IE8- 就不支持了。
我们可以自己写一个函数(Array对象的方法都是定义在原型对象上的),如下:
<script type="text/javascript">
Array.prototype.unique = function(){
var length = this.length;
if(length <= 1){
return this;
}
if(!Array.prototype.indexOf){
Array.prototype.indexOf = function(item){
var l = this.length, i = 0, r = -1;
if(l <= 0){
return -1;
}
for(; i < l; i++){
if(this[i] === item){
r = i;
}
}
return r;
}
}
var result = []; //去重数组
for(var i = 0; i < length; i++){
if(result.indexOf(this[i]) === -1){
result.push(this[i]);
}
}
return result;
}
</script>