웹마스터 팁
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
배열 스크립트 종합선물세트
2004.10.12 23:39
구현이 그다지 어려운 것들은 아니지만, 가끔 사용하다보면 귀찮아질때가 있는 배열관련 스크립트입니다. 대부분 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;
//
// 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;
댓글 0
제목 | 글쓴이 | 날짜 |
---|---|---|
스킨 시스템 구축.(1탄 읽어오기) [11] | 씨파개 | 2003.05.13 |
Wake On Lan 기능 사용하기... [3] | sMokaHallo | 2003.05.17 |
썸네일 자동생성하고 이미지 사이즈 자동 줄이기... [6] | sMokaHallo | 2003.05.21 |
홈페이지의 내용을 DB에 담기 [15] | 세죠위그이 | 2003.05.30 |
체크박스등으로 배열로 변수를 넘길때.. [1] | myself2 | 2003.06.06 |
php 로 기존 문서 포함시키기 [10] | 이성헌 | 2003.06.08 |
PHP 익히기 1 [24] | 구리구리 | 2003.06.09 |
PHP 익히기 2 [9] | 구리구리 | 2003.06.10 |
PHP 익히기 3 [11] | 구리구리 | 2003.06.17 |
이미 인클루드된 파일은 다시 인클루드하지 않기 [14] | 김병희 | 2003.06.20 |
htmlspecialchars 사용하시는 분들 [5] | holies | 2003.07.11 |
Thumbnail 생성하기 - 수정^^; [9] | holies | 2003.07.11 |
'와 "의 속도 차이?! [6] | holies | 2003.07.12 |
초간단 php 랜덤 이미지 및 랜덤 배경이미지 소스 [6] | 거금도 | 2003.07.24 |
다른 사이트에 있는 파일 읽어오기 [50] | 김규백 | 2003.07.25 |
스킨 시스템 사용하기 [2] | 김규백 | 2003.07.25 |
제로보드 + MSN 메신저 (작성글에 리플이나 코멘트가 달리면 MSN으로 알려준다?)
[18]
![]() | HungryMania | 2003.08.01 |
체널을 응용해서 tmain.php?tdb=test&db=src 식으로 쓰기 [12] | 9000㎒ | 2003.08.01 |
$i++ !== $i += 1 [14] | 플로렐라 | 2003.08.04 |
개판 오분전 정규식(4) | 미친개 | 2003.08.07 |