JS 배열 이 원래 배열 에 미 친 영향 및 반환 값 을 전면적으로 분석 합 니 다.

5858 단어
개술
본 고 는 주로 Js 에서 옮 겨 다 니 는 방법 이 원래 배열 에 미 친 영향 과 방법 에 대한 반환 치 를 테스트 하 는 것 이다.
테스트 에 사용 할 코드 주소 github. com / fanxuewen / e...
두루
1. map 와 forEach
원 배열 에 미 친 영향 및 반환 값 검증
let originalArr=[1,2,3,4,5,6,7,8,9,10];
console.log('------------map---------------');
let arrMap= originalArr.map(item=>{
     return item*2;
 })
 console.log('original',originalArr);
 console.log('result',arrMap);
 
 console.log('------------forEach---------------');
let arrForEach=originalArr.forEach(item=>{
     return item*2;
 })
 console.log('original',originalArr);
 console.log('result',arrForEach);

결과: map 와 foreach 는 원래 배열 을 바 꾸 지 않 습 니 다. map 는 새 배열 로 돌아 갑 니 다. foreach 는 반환 값 이 없습니다.
실행 효율 검증
let originalArr=[];
for(let i=0;i<1000000;i++){
    originalArr.push(i);
}
console.time('forEach')
originalArr.forEach(item=>{
    return item*2;
})
console.timeEnd('forEach');
console.time('map')
originalArr.map(item=>{
    return item*2;
})
console.timeEnd('map');

결과: foreach 의 실행 효율 이 map 보다 약간 높 습 니 다.
2. some 와 every 및 filter
원 배열 에 미 친 영향 및 반환 값 검증
let originalArr=[1,2,3,4,5,6,7,8,9,10];
 console.log('------------filter---------------');
let arrFilter= originalArr.filter(item=>{
     return item>2;
 });
 console.log('original',originalArr);
 console.log('result',arrFilter);
 console.log('------------some---------------');
 let arrSome=originalArr.some(item=>{
      return item>2;
 })
 console.log('original',originalArr);
 console.log('result',arrSome);
 console.log('------------every---------------');
 let arrEvery=originalArr.every(item=>{
      return item>2;
})
console.log('original',originalArr);
console.log('result',arrEvery);

결과: 세 자 는 원래 의 배열 을 바 꾸 지 않 고 filter 는 조건 을 만족 시 키 는 새로운 배열 로 돌아 갑 니 다. some 와 every 는 bool 값 으로 돌아 갑 니 다. some 는 y 가 조건 을 만족 시 키 는 항목 만 있 으 면 True 로 돌아 갑 니 다. every 는 판정 조건 을 모두 만족 시 켜 야 true 로 돌아 갑 니 다.
순환 을 중단 할 수 있 는 지 검증 합 니 다.
let originalArr=[1,2,3];
 console.log('------------filter---------------');
let arrFilter= originalArr.filter((item,index)=>{
    console.log(item);
     if(index==1){
       return false;
     }
      return true;
 });
 console.log('original',originalArr);
 console.log('result',arrFilter);
 console.log('------------some---------------');
 let arrSome=originalArr.some((item,index)=>{
    console.log(item);
    if(index==1){
        return false;
    }
     return true;
 })
 console.log('original',originalArr);
 console.log('result',arrSome);
 console.log('------------every---------------');
 let arrEvery=originalArr.every((item,index)=>{
     console.log(item);
    if(index==1){
        return false;
    }
    return true;
})
console.log('original',originalArr);
console.log('result',arrEvery);

결과: filter 는 순환 을 미리 종료 하지 않 습 니 다. return 이 false 일 때 해당 항목 은 새로 돌아 온 배열 에 나타 나 지 않 습 니 다. some 과 every 는 순환 을 미리 종료 할 수 있 습 니 다. some 가 return 이 true 일 때 즉시 순환 을 종료 합 니 다. every 가 return 이 false 일 때 즉시 종료 합 니 다.
이상 의 테스트 를 통 해 알 수 있 듯 이 1. 모든 스 트 리밍 방법 은 원 배열 2. map 와 filter 에 영향 을 주지 않 고 새로운 배열 3. foreach 로 돌아 갑 니 다. 반환 값 4. some 와 every 가 bool 값 을 되 돌려 주지 않 고 순환 을 미리 중단 할 수 있 습 니 다.
다음으로 전송:https://juejin.im/post/5caec65e5188251ae4157497

좋은 웹페이지 즐겨찾기