今天业务上的需求,前台需要类似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<this.table.length;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<this.table.length;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<i;h++){
t.push(this.table[h]);
}
for(var f=i+1;f<this.table.length;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方法优快云
List.prototype.toArray=function(){
return this.table;
}
//toString方法
List.prototype.toString=function(){
var s="";
for(var i=0;i<this.table.length;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