今天业务上的需求,前台需要类似java集合list或者set那样的工具或者类型来处理一个比价复杂的业务,js中是没有这种集合工具的,用数组吧考虑了下还是长久下,写个类似的简单工具,做成公共js,然后后期不断完善和优化,以后用起来就很方便了,这里就记录和分享下我的代码,确切的说很不完善,和java中ArrayList功能还差一些,一些地方也待优化,不过可以临时救急用,网上搜到一两篇就,不过还有很多bug,我下边的js代码都是测试过的,基本都可以正常使用,很多功能如构造方法、非法数据处理及异常的处理等有待完善。

后期如有时间的话,再完善和优化原有的基础上,会用js实现java中的LinkedList,HashSet,HashMap等类似集合的工具类,以方便开发中使用,声明下,时间仓促,功能简单,如代码中处理不得当的地方,十分恳请您留言,必有重谢!

/*

*定义一个类似java中List集合的对象并添加对应常用方法

*功能比较简易,远不如真正List强大而高效,暂目前满足几个需求即可,待后续完善优化

*@author 陈磊兴

*@date 2015-09-10

*/

//List定义

function List(){

this.table=new Array();

}

//get方法

List.prototype.get=function(i){

return this.table[i];

}

//add方法

List.prototype.add=function(o){

this.table.push(o);

}

//indexOf方法,无返回-1,如有首次出现的元素索引

List.prototype.indexOf=function(o){

var c=-1;

for(var i=0;i

if(this.table[i]==o){

c=i;

break;

}

}

return c;

}

//contain方法

List.prototype.contain=function(o){

var e=false;

for(var i=0;i

if(this.table[i]==o){

e=true;

break;

}

}

return e;

}

//removeAt方法根据索引,返回被移除的元素

List.prototype.removeAt=function(i){

if(this.table.length==0 || i<0 || i>(this.table.length-1)){

return ;

}

var t=[];

for(var h=0;h

t.push(this.table[h]);

}

for(var f=i+1;f

t.push(this.table[f]);

}

var e=this.table[i];

this.table=t;

return e;

}

//removeObj方法移除首次出现的指定元素返回true或false,如果有

List.prototype.removeObj=function(o){

var i=this.indexOf(o);

var s=false;

if(i!=-1){

this.removeAt(i);

s=true;

}

return s;

}

//toArray方法CSDN

List.prototype.toArray=function(){

return this.table;

}

//toString方法

List.prototype.toString=function(){

var s="";

for(var i=0;i

s+=this.table[i].toString();

if(i!=this.table.length-1){

s+=',';

}

}

return s;

}

//size方法

List.prototype.size=function(){

return this.table.length;

}

var list=new List(),然后直接在线测试运行一下http://runjs.cn/code

好了,今天的分享就到这里了,后期会继续不断完善。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐