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>
posted @ 2015-08-15 22:22  我是攻城狮  阅读(346)  评论(0编辑  收藏  举报