javascript ArrayList 구현
2016. 1. 5. 11:32ㆍlanguage/javascript
javascript에서 사용 가능한 ArrayList 예제이다.
javascript에서 java의 collection을 사용고 싶을 때가 많다.
배열들 또는 클래스, 함수, Object, Map 등을 담고 사용해야 할 경우가 생긴다.
다음 소스를 js파일로 만들고 해당 파일을 빌드하고
java의 ArrayList처럼 사용하면 된다.
기본적인 함수 구현
ArrayList=function(/* array? */arr){
// summary
// Returns a new object of type dojox.collections.ArrayList
var items=[];
if(arr) items=items.concat(arr);
this.count=items.length;
this.add=function(/* object */obj){
// summary
// Add an element to the collection.
items.push(obj);
this.count=items.length;
};
this.addRange=function(/* array */a){
// summary
// Add a range of objects to the ArrayList
if(a.getIterator){
var e=a.getIterator();
while(!e.atEnd()){
this.add(e.get());
}
this.count=items.length;
}else{
for(var i=0; i<a.length; i++){
items.push(a[i]);
}
this.count=items.length;
}
};
this.clear=function(){
// summary
// Clear all elements out of the collection, and reset the count.
items.splice(0, items.length);
this.count=0;
};
this.clone=function(){
// summary
// Clone the array list
return new dojox.collections.ArrayList(items); // dojox.collections.ArrayList
};
this.contains=function(/* object */obj){
// summary
// Check to see if the passed object is a member in the ArrayList
for(var i=0; i < items.length; i++){
if(items[i] == obj) {
return true; // bool
}
}
return false; // bool
};
this.forEach=function(/* function */ fn, /* object? */ scope){
// summary
// functional iterator, following the mozilla spec.
dojo.forEach(items, fn, scope);
};
this.get = function(index) {
return items[index];
};
this.size = function() {
return items.length;
};
this.getIterator=function(){
// summary
// Get an Iterator for this object
return new dojox.collections.Iterator(items); // dojox.collections.Iterator
};
this.indexOf=function(/* object */obj){
// summary
// Return the numeric index of the passed object; will return -1 if not found.
for(var i=0; i < items.length; i++){
if(items[i] == obj) {
return i; // int
}
}
return -1; // int
};
this.insert=function(/* int */ i, /* object */ obj){
// summary
// Insert the passed object at index i
items.splice(i,0,obj);
this.count=items.length;
};
this.item=function(/* int */ i){
// summary
// return the element at index i
return items[i]; // object
};
this.remove=function(/* object */obj){
// summary
// Look for the passed object, and if found, remove it from the internal array.
var i=this.indexOf(obj);
if(i >=0) {
items.splice(i,1);
}
this.count=items.length;
};
this.removeAt=function(/* int */ i){
// summary
// return an array with function applied to all elements
items.splice(i,1);
this.count=items.length;
};
this.reverse=function(){
// summary
// Reverse the internal array
items.reverse();
};
this.sort=function(/* function? */ fn){
// summary
// sort the internal array
if(fn){
items.sort(fn);
}else{
items.sort();
}
};
this.setByIndex=function(/* int */ i, /* object */ obj){
// summary
// Set an element in the array by the passed index.
items[i]=obj;
this.count=items.length;
};
this.toArray=function(){
// summary
// Return a new array with all of the items of the internal array concatenated.
return [].concat(items);
}
this.toString=function(/* string */ delim){
// summary
// implementation of toString, follows [].toString();
return items.join((delim||","));
};
}; |
cs |
'language > javascript' 카테고리의 다른 글
javascript / 화면 엑셀 다운로드 / table / 테이블 다운로드 / excel / iframe 다운로드 (0) | 2016.01.05 |
---|---|
javascript / 천단위 구분기호 / , / 1,000 / 콤마 (0) | 2016.01.05 |
javascript / popup / 팝업 / 중복으로 열릴때 / 팝업 포커스 / 팝업 체크 / window.open (0) | 2016.01.05 |
javascript / file size check / 파일 사이즈 / 파일 크기 / 검사 / 체크 (2) | 2016.01.05 |
javascript / trim 구현 (0) | 2016.01.05 |
javascript / 검색 또는 로그인 할 때 엔터키 enter 누르면 실행되게 하기 (3) | 2016.01.05 |
javascript / xml parsing / 파싱 / 예제 (2) | 2016.01.05 |
javascript / file extension(확장자) check / 필수항목 표시 / zerolength(공백) check / number(숫자) check / validator (0) | 2016.01.05 |
javascript 프린트 함수 기본 예제 (0) | 2016.01.05 |
javascript Map 구현 (0) | 2016.01.05 |