如何删除数组里面多余的重复项?
最好能简练点。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
var array=[
"hello",
"word",
"you",
"me",
"hello", // 重复了 ,删掉
"you", // 重复了 ,删掉
"boy"
]
// 怎样简化数组,把里面多余的重复项删除
</script>

解决方案 »

  1.   


    一. YUI中的源码
    var toObject = function(a) {
          var o = {};
          for (var i=0, j=a.length; i<j; i=i+1) { // 这里我调整了下, YUI源码中是i<a.length
               o[a[i]] = true;
          }
          return o;
    };
    var keys = function(o) {
          var a=[], i;
          for (i in o) {
               if (o.hasOwnProperty(i)) { // 这里, YUI源码中是lang.hasOwnProperty(o, i)
                   a.push(i);
               }
          }
          return a;
    };
    var uniq = function(a) {
          return keys(toObject(a));
    };
      

  2.   


    var array=[    
            "hello",
            "word",
            "you",        
            "me",
            "hello",    // 重复了 ,删掉
            "you",        // 重复了 ,删掉
            "boy"
        ]
    for(var i=0,len=array.length;i<len;i++){
    for(var j=i+1;j<len;j++){
    if(array[j]===array[i]) array.splice(j,1)
    }
    }
    for(var i=0,len=array.length;i<len;i++) document.write(array[i]+',')比较原始的办法
      

  3.   

    peswe的方法很简单啊,太谢谢了。
    yui看不懂
      

  4.   

    不好意思,3楼的代码,运行到后面可能会出现'undefined'的情况,需要修改下:var array=[    
            "hello",
            "word",
            "you",        
            "me",
            "hello",    // 重复了 ,删掉
            "you",        // 重复了 ,删掉
            "boy"
        ]
    for(var i=0;i<(len=array.length);i++){
    for(var j=i+1;j<len;j++){
    if(array[j]===array[i]) array.splice(j,1)
    }
    }
    for(var i=0,len=array.length;i<len;i++) document.write(array[i]+',')
      

  5.   

    原来for语句还可以i<(len=array.length);这条搞的呀,见识了
      

  6.   


    Array.prototype.distinct = function(){
       var newArray=[];
        var provisionalTable = {};
        for (var i = 0, item; (item= this[i]) != null; i++ ) {
            if (!provisionalTable[item]) {
                newArray.push(item);
                provisionalTable[item] = true;
            }
        }
        return newArray;
    }