方法1 filter和indexOf(能区分数字1和字符串‘1’):
function unique(arr){
      return arr.filter((item,index,array) => {
            return array.indexOf(item) >= index
      })
}
方法2 循环加splice(能区分数字1和字符串‘1‘,可改造用于对象比较):
function unique(arr){
      var len = arr.length;
      for(var i=0;i<len-1;i++){
            for(var j=i+1;j<len;j++){
                  if(arr[i] === arr[j]){
                        arr.splice(j,1);
                  }
            }
      }
}
方法3 hash检测类型(能区分数字1和字符串‘1’)
function unique(arr){
      var hash = {},res = [];
      var item,key;
      for(var i=0,len=arr.length;i<len;i++){
            item = arr[i];
            key = typeof(item) + item;
            if(!hash[key]){
                  hash[key] = true;
                  res.push(item); 
            }
      }
      return res;
}
方法4 hash覆盖(不能区分数字1和字符串‘1’)
function unique(arr){
      var hash = {};
      for(var i=0,len=arr.length;i<len;i++){
            hash[arr[i]] = arr[i];
      }
      return Object.keys(hash);
}
原文:http://www.cnblogs.com/mengff/p/6838884.html