웹마스터 팁

구현이 그다지 어려운 것들은 아니지만, 가끔 사용하다보면 귀찮아질때가 있는 배열관련 스크립트입니다. 대부분 php 함수의 명명규칙을 따랐으므로, 어떤 역할을 하는건지 구체적으로 알고 싶다면 PHP 함수에서 Array Functions 장을 참고하면 됩니다.

//
//      Array method library
//    by 행복한고니 (20041012)
//

// 배열에 검색한 값이 있으면 인덱스 번호를 리턴, 없으면 -1을 리턴
Array.prototype.search = function(val) {
       var len = this.length;
      
       for (var i=0; i < len; i++) {
              if (this[i] == val) return i;
       }
      
       return -1;
}

// search 메소드와 같으나 대소문자 구별안함
Array.prototype.isearch = function(val) {
       var len = this.length;

       if ((typeof val).toLowerCase() == 'string') val = val.toLowerCase();
       for (var i=0; i < len; i++) {
              if (typeof this[i] != typeof val) continue;
              if ((typeof val).toLowerCase() == 'string' && val == this[i].toLowerCase()) return i;
              else if (val == this[i]) return i;
       }
       return -1;
}

// 키 배열을 받아서 문자열 인덱스가 있는 객체를 반환한다.
// 만일 배열의 크기가 서로 맞지 않으면 빈 array가 반환된다.
// 리턴값은 object
Array.prototype.combine = function(keyArr) {
       if (this.length != keyArr.length) return [];
      
       var ret = {};
       for (var i=0; i < this.length; i++) ret[keyArr[i]] = this[i];
      
       return ret;
}

// 범위의 값을 포함하고 있는 배열 반환
Array.prototype.range = function(Low, High, Step) {
       var ret = [];
       var t1 = (typeof Low).toLowerCase();
       var t2 = (typeof High).toLowerCase();
      
       if (Step == undefined) Step = 1;
       if (!((t1 == 'number' || t1 == 'string') && t1 == t2)) return ret;
       if (t1 == 'string') { Low = Low.charCodeAt(0); High = High.charCodeAt(0); }

       for (var i=Low; i <= High; i+=Step) ret[ret.length] = (t1=='string')?String.fromCharCode(i):i;

       return ret;
}

// 배열의 각 요소에 같은 함수 적용
// 만약, funcName 이라는 함수가 있다고 하면, Array.walk(funcName)과 같이 사용한다.
// 함수의 첫번째 전달자에 값이, 두번째 전달자에 인덱스가 전달된다.
Array.prototype.walk = function(Func) {
       var len = this.length;
       for (var i=0; i<len; i++) {
              this[i] = Func(this[i], i);
       }
}

// 배열 정렬 순서를 거꾸로 한다.
// 사용자 함수를 지정하면 지정한 함수로 정렬한다.
Array.prototype.rsort = function(sortFunc) {
       if (sortFunc == undefined) this.sort();
       else this.sort(sortFunc);
       return this.reverse();
}

// 배열내에 존재하는 숫자를 모두 더한다.
Array.prototype.sum = function() {
       var ret = 0;
       for (var i=0; i<this.length; i++) {
              if((typeof this[i]).toLowerCase() == 'number') ret += this[i];
       }

       return ret;
}

// 현재 배열요소를 반환한다.
Array.prototype.current = function() {
       if (this._index > this.length) this._index = this.length;
       return this[this._index];
}

// 현재 배열요소의 이전요소로 포인터를 이동하고 이전요소를 반환한다.
Array.prototype.prev = function() {
       if (--this._index < 0) this._index++;
       return this[this._index];
}

// 현재 배열요소의 다음요소로 포인터를 이동하고 다음요소를 반환한다.
Array.prototype.next = function() {
       if (++this._index >= this.length) this._index--;
       return this[this._index];
}

// 배열의 처음 요소로 포인터를 이동하고 요소를 반환한다.
Array.prototype.first = function() {
       this._index = 0;
       return this[0];
}

// 배열의 마지막 요소로 포인터를 이동하고 요소를 반환한다.
Array.prototype.end = function() {
       this._index = this.length - 1;
       return this[this._index];
}

// 현재 키를 반환한다.
Array.prototype.key = function() {
       if (this._index < 0) this._index = 0;
       else if (this.length > 0 && this._index >= this.length) this._index = this.length - 1;
       return this._index;
}

Array.prototype._index = 0;
제목 글쓴이 날짜
Javascript + 플래시 칼라피커 [6] 행복한고니 2004.10.08
체크박스를 이미지로 사용하기 [7] 행복한고니 2004.10.10
배열 스크립트 종합선물세트 행복한고니 2004.10.12
멀티 파일다운로드 꼼수 (새창버전) [1] 행복한고니 2004.10.14
XP2인지 체크하여 XP2일때는 팝업허용하라는 메시지 뛰워주기 [3] 아돌 2004.10.19
모든 이미지, 텍스트 링크에 점선 없애기 [5] 이강민 2004.10.25
JavaScript 구문강조 효과내기 파우링 2004.10.28
행복한고니님의 체크박스를 이미지로 사용하기를 보고... 체크박스옆에 텍스트 부치기 [2] beMax 2004.10.29
ActiveX 멀티파일업로더 입니다. [9] by風 2004.11.01
홈페이지 나갈때 새창띄우기 [2] piasol 2004.11.07
(수정)배경음악,연월일,시간, 코멘트 셋트.(AM,PM==>오전,오후 순,한국식으로 ...) [4] 민피디 2004.11.10
ActiveX 플래시 이미지캡쳐 컨트롤 iFlower [1] 덴디 2004.11.15
iFlower 윈도우리스 플래시 ActiveX 컨트롤 덴디 2004.11.16
자바스크립트 암호화 [5] 손상모 2004.11.18
로딩중인 페이지에 효과넣기 [4] LUFFY 2004.11.20
이미지 를 브라우져에서 내맘데로 옮겨두기 [8] piasol 2004.12.03
이제 미디어플레이어는 가라? 곰플레이어로 실시간으로 감상하자. [13] ⓣing★™ 2004.12.05
홈페이지를 풀스크린으로 띄우자 - 올플래시로 보이는군요. [21] Multi_Taeji 2004.12.10
마우스를 대면 이미지가 바뀐다. 롤오버 이미지 [3] 하진 2004.12.19
개판 오분전 빙고 [2] 미친개 2004.12.30