>웹 프론트엔드 >JS 튜토리얼 >ArrayList 클래스(강화 버전)_기본 지식

ArrayList 클래스(강화 버전)_기본 지식

WBOY
WBOY원래의
2016-05-16 19:15:39910검색

작성자: Yueying
출처:http://bbs.51js.com/thread-66469-1-1.html

코드 복사 코드는 다음과 같습니다.

<스크립트> 
함수 ArrayList() 

  var ins = Array.apply(this, 인수); 
  ins.constructor = arguments.callee; 
  ins.base = 배열; 

  ins.each = function(closure) 
  { 
    if(typeof closure == 'undefine') 
      클로저 = function(x){return x}; 
    if(클로저 유형 != 'function') 
    { 
      var c = 클로저; 
      클로저 = function(x){return x == c} 
    } 

    var ret = new ArrayList(); 
    var args = Array.apply(this, 인수).slice(1); 

    for(var i = 0; i < this.length; i ) 
    { 
      var rval = closure.apply(this, [this[i]].concat(args). concat(i)) 
      if(rval || rval === 0) 
        ret.push(rval); 
    } 

    반품 ret; 
  } 

  ins.trim = function() 
  { 
    return this.each.apply(this); 
  } 

  ins.all = function(closure) 
  { 
    return this.each.apply(this, 인수).length == this.length; 
  } 

  ins.any = function(closure) 
  { 
    return this.each.apply(this, arguments).length > 0; 
  } 

  ins.contains = function(el) 
  { 
    return this.any(function(x){return x == el}); 
  } 

  ins.indexOf = function(el) 
  { 
    var ret = this.each.call(this, function(x, i){return el == x?i :false})[0]; 
    반품 복귀 ? ret : -1; 
  } 

  ins.subarr = function(start, end) 
  { 
    end = end || 수학.무한대; 
    return this.each.call(this, function(x, i){return i >= start && i < end ? x : null}); 
  } 

  ins.valueOf = ins.toString; 

  ins.toString = function() 
  { 
    return '[' this.valueOf() ']'; 
  } 

  ins.map = function(list, closure) 
  { 
    if (typeof list == 'function' && typeof closure != 'function') 
    { 
      var li = 폐쇄; 
      폐쇄 = 목록; 
      목록 = li; 
    } 
    폐쇄 = 폐쇄 || 배열목록; 

    return this.each.call(this, function(x, i){return closure.call(this, x, list[i])}); 
  }; 

  ins.slice = function() 
  { 
    return this.constructor(ins.base.prototype.slice.apply(this, 인수)); 
  } 

  ins.splice = function() 
  { 
    return this.constructor(ins.base.prototype.splice.apply(this, 인수)); 
  } 

  ins.concat = function() 
  { 
    return this.constructor(ins.base.prototype.concat.apply(this, 인수)); 
  }

반환
}

var a = new ArrayList(1,2,3)
alert(a.length)
alert(a);
alert(astanceofArray);
alert(a.constructor);
alert(ainstanceofArrayList); //안타깝지만 이 값은 잘못되었으나 구현할 수 없습니다.

alert(a.each(function(x){return x x}))
alert(a.all(function(x){return x>0})); Alert(a.all(function (x){return x<1}))
alert(a.any(function(x){return x == 2}))

alert( a.contains(2)) ;
alert(a.contains(-1));

var b = a.map([3,2], function(x, y){return x y });
경고(b);
alert(a.map([2,3,4]))

alert(a.indexOf(2)); (a.indexOf(-1 ));

alert(a.subarr(1,3))
alert(a.toString())
var b = new ArrayList(a ,a);
Alert(b.toString());
alert(b.slice(1))
배열(컬렉션)에서 조건이 충족되면 true를 반환하고 그렇지 않으면 false를 반환합니다.
arr.any는 배열(집합)의 모든 요소 중 하나라도 조건을 충족하면 요소가 하나도 없으면 true를 반환합니다. 충족되면 false를 반환
arr.each Return 조건을 충족하는 각 요소로 구성된 하위 배열
arr.map은 두 개의 배열(집합)과 일치하고 지정된 클로저를 사용하여 해당 요소를 계산합니다.
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.