首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

JavaScript数组去掉反复

2012-11-22 
JavaScript数组去掉重复引用Ext中实现方法:unique: function( array ) {var ret [], done {}try {for

JavaScript数组去掉重复
引用Ext中实现方法:

unique: function( array ) {          var ret = [], done = {};          try {              for ( var i = 0, length = array.length; i < length; i++ ) {                  var id = jQuery.data( array[ i ] );                    if ( !done[ id ] ) {                      done[ id ] = true;                      ret.push( array[ i ] );                  }              }            } catch( e ) {              ret = array;          }           return ret;  }

实现中需要注意的就是对于存在的如何去标示,ext采用的是jQuery.data(array[ i ])方法生成一个hash中key,循环中检测是否已经存在同样的key,如果存在那么在新数组中就不在重复。以此达到去掉重复数据。

网上常用方式是2个重复for循环,但是存在效率问题。
Array.prototype.unquie=function(){var newArray=new Array();var len=this.length;for (var i=0;i<len ;i++){for(var j=i+1;j<len;j++){if(this[i]===this[j]){j=++i;}}newArray.push(this[i]);}return newArray;}

另外一种比较优化方法:
Array.prototype.unquie=function(){        //需要考虑数组内容中包含boolean,string类型数据。var newArray=[] , provisionalTable = {};for (var i = 0, item; (item= this[i]) != null; i++) {        if (!provisionalTable[item]) {            newArray.push(item);            provisionalTable[item] = true;        }    }    return newArray;}


运行测试时间:
console.time('t');var array = [1,false,'',true,true,4,4,4,4,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4];console.info(array.unique())console.timeEnd('t')

热点排行