[JS] 배열 스크립트 종합선물세트

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


//
// Array library
// by 행복한고니 (20041012)
//
// Change log
// - 2005. 7. 21 Array.prototype.insert 추가

// 배열에 검색한 값이 있으면 인덱스 번호를 리턴, 없으면 -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 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.insert = function(offset) {
var ret = new Array();
for (var i=0; i < this.length; i++) { ret.push(this[i]); if (i == offset) { for(var j=1; j < arguments.length-1; j++) ret.push(arguments[j]); } } return ret; }

  1. 매일매일 이런 걸 계속 만들어서 공개하시다닛....
    좌절입니다.. ㅡ.ㅡ
    넘 부지런한 거 아녜요?

댓글을 남겨주세요

This site uses Akismet to reduce spam. Learn how your comment data is processed.