배열스크립트----행복한고니님팁 > 그누3 팁자료실

그누3 팁자료실

배열스크립트----행복한고니님팁 정보

기타 배열스크립트----행복한고니님팁

본문

// 배열에 검색한 값이 있으면 인덱스 번호를 리턴, 없으면 -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
  • 복사

댓글 전체

© SIRSOFT
현재 페이지 제일 처음으로