JS 시 뮬 레이 션 ECMAScript 5 에 추 가 된 배열 방법

6348 단어 ecmascript배열
ECMAScript 5 는 10 개의 배열 방법 을 추 가 했 습 니 다.이 방법 들 은 ie9 및 이상 브 라 우 저 에서 만 사용 할 수 있 습 니 다.다음은 이러한 방법 에 대한 모 의 실현 입 니 다.
1.Array.isArray(element)
이 방법 은 들 어 오 는 대상 이 배열 형식 인지 판단 하고 트 루 와 false 를 되 돌려 줍 니 다.

Array.newIsArray = function(element){
  return Object.prototype.toString.call(element).slice(8,-1).toLocaleLowerCase() === 'array';
}
2.indexOf(요소)
이 방법 은 들 어 오 는 대상 이 배열 에 있 는 위 치 를 찾 고 이 위 치 를 되 돌려 줍 니 다.찾 지 못 하면-1 로 돌아 갑 니 다.이 방법 은 undefined 를 찾 는 데 사용 할 수 없습니다.
index Of 방법 은~부적 과 함께 사용 할 수 있 습 니 다.비트 연산 자~들 어 오 는 숫자 를 반전 시 키 고 1 을 줄 이기 때문에-1 은 0 이 됩 니 다.이 럴 때 판단 조건 에 두 면 암시 적 으로 false 로 전 환 됩 니 다.

Array.prototype.newIndexOf = function(element){
  var index = -1;
  for(var i = 0; i < this.length; i++){
    if(this[i] === element && this[i] !== undefined){
      index = i;
      break;
    }
  }
  return index;
};
var a = [1,2,3,4,,,5];
console.log(a.newIndexOf(undefined));
3.lastIndexOf(element)
이 방법 은 index Of(element)의 역할 과 반환 값 이 같 으 며,유일 하 게 다른 점 은 오른쪽 에서 왼쪽으로 찾 는 것 입 니 다.

Array.prototype.newLastIndexOf = function(element){
  var index = -1;
  for(var i = this.length - 1; i >= 0; i--){
    if(this[i] === element && this[i] !== undefined){
      index = i;
      break;
    }
  }
  return index;
};
var a = [1,2,3,4,5,2,,,3];
console.log(a.newLastIndexOf(undefined));
4.forEach(function(element,index,array){})
배열 을 옮 겨 다 니 며 매개 변 수 는 하나의 반전 함수 이 고 세 개의 전 참 이 있 습 니 다.현재 요소,현재 요소 색인,전체 배열 입 니 다.이 방법 은 부족 한 구성원 을 보류 하 는 것 을 뛰 어 넘 고 원래 배열 을 파괴 하지 않 습 니 다.

Array.prototype.newForEach = function(fn){
  for(var i = 0; i < this.length; i++){
    if(i in this){
      fn(this[i], i, this);
    }
  }
};
var a = [1,2,3,undefined,undefined,4,5,2,3];
a.forEach(function(e, i, arr){
  console.log(e, i, arr);
})
5.every(function(element,index,array){})
들 어 오 는 반전 함 수 를 사용 하여 배열 을 옮 겨 다 니 며 모든 반전 이 true 로 돌아 갈 때 every 방법 은 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.이 방법 은 부재 자 를 뛰 어 넘 고 원수 조 를 파괴 하지 않 는 다.

Array.prototype.newEvery = function(fn){
  var status = true;
  for(var i = 0; i < this.length; i++){
    if(i in this){
      if(!(status = !!fn(this[i], i, this))){
        break;
      }
    }
  }
  return status;
};
var a = [1,2,3,4,5,2,undefined,,3];
console.log(a.newEvery(function(){
  console.log(arguments);
  return 1;
}));
6.some(function(element,index,array){})
들 어 오 는 리 셋 함 수 를 사용 하여 배열 을 옮 겨 다 니 며,리 셋 이 true 로 돌아 갈 때,some 방법 은 true 로 돌아 갑 니 다.그렇지 않 으 면 false 로 돌아 갑 니 다.이 방법 은 부재 자 를 뛰 어 넘 고 원수 조 를 파괴 하지 않 는 다.

Array.prototype.newSome = function(fn){
  var status = false;
  for(var i = 0; i < this.length; i++){
    if(i in this){
      if(status = !!fn(this[i], i, this)){
        break;
      }
    }
  }
  return status;
};
var a = [1,2,3,4,5,2,undefined,,3];
console.log(a.newSome(function(){
  console.log(arguments);
  return 0;
}));
7.map(function(element,index,array){})
들 어 오 는 리 셋 함 수 를 사용 하여 배열 을 옮 겨 다 니 며 되 돌아 오 는 내용 으로 새로운 배열 을 구성 합 니 다.이 방법 은 빈 요 소 를 건 너 뛰 지만 최종 결 과 는 구성원 이 없 는 위 치 를 유지 하고 원래 배열 을 파괴 하지 않 습 니 다.

Array.prototype.newMap = function(fn){
  var array = new Array(this.length);
  for(var i = 0; i < this.length; i++){
    if(i in this){
      array[i] = fn(this[i], i, this);
    }
  }
  return array;
};
var a = [1,2,3,4,5,2,undefined,,3];
console.log(a.newMap(function(element, index, array){
  console.log(arguments);
  return element;
}))
8.filter(function(element,index,array){})
들 어 오 는 반전 함 수 를 사용 하여 배열 을 옮 겨 다 니 며 새 배열 로 돌아 갑 니 다.이 배열 에는 모든 반전 함수 가 true 로 돌아 가 는 요 소 를 포함 하고 있 으 며,원래 배열 을 파괴 하지 않 습 니 다.

Array.prototype.newFilter = function(fn){
  var array = [];
  for(var i = 0; i < this.length; i++){
    if((i in this) && fn(this[i], i, this)){
      array.push(this[i]);
    }
  }
  return array;
};
var a = [1,2,3,4,5,2,undefined,,3];
console.log(a.newFilter(function(element, index, array){
  console.log(arguments);
  return element;
}))
9.reduce(function(accumulator,currentValue,currentIndex,array){})
들 어 오 는 리 셋 함 수 를 사용 하여 배열 을 옮 겨 다 니 며 마지막 리 셋 함수 가 호출 한 반환 값 을 되 돌려 줍 니 다.부족 한 구성원 을 건 너 뛰 면 원래 배열 을 파괴 하지 않 습 니 다. 

Array.prototype.newReduce = function(fn){
  if(this.length === 0){
    throw new TypeError('Reduce of empty array with no initial value');
  }
  var result;
  for(var i = 0; i < this.length; i++){
    if(i in this){
      if(!result){
        result = this[i];
      }else{
        result = fn(result, this[i], i, this);
      }
    }
  }
  return result;
};
var a = [,,1,2,3,4,,6,7];
console.log(a.newReduce(function(a,b){
  console.log(arguments);
  return a + b;
}))
10.reduceRight(function(accumulator,currentValue,currentIndex,array){})
이 방법 은 reduce 와 마찬가지 로 유일한 차이 점 은 오른쪽 에서 왼쪽으로 옮 겨 다 니 는 것 이다.

Array.prototype.newReduceRight = function(fn){
  if(this.length === 0){
    throw new TypeError('Reduce of empty array with no initial value');
  }
  var result;
  for(var i = this.length - 1; i >= 0; i--){
    if(i in this){
      if(!result){
        result = this[i];
      }else{
        result = fn(result, this[i], i, this);
      }
    }
  }
  return result;
};
var a = [,,1,2,3,4,,6,7];
console.log(a.newReduceRight(function(a,b){
  console.log(arguments);
  return a + b;
}))
위 에서 말 한 것 은 편집장 이 소개 한 JS 시 뮬 레이 션 으로 ECMAScript 5 에 추 가 된 배열 방법 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 은 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기