배열 loop의 종류와 차이점

loop문의 종류

  • forEach - 한개씩 돌리면서 무언갈 하기
    • ['a','b','c'].forEach((x)=>{ console.log(x) }) // a // b // c
  • filter - 조건에 맞는것만 배열로 반환하기
    • 말그대로 배열자체의 원소를 필터링 하여 true를 반환한 인자만 얻게 된다
      • 그에 대한 filter의 반환값은 배열이기에 연속으로 체이닝 할 수 있다
      ['a','b','c'].filter((x)=>{ return x == 'a'; }) // ['a'] //체이닝 ['a','b','c'].filter((x)=>{ return x == 'a'; }).forEach((x)=>{ console.log('원하는 것만 골라낸뒤 개발하기',x); }) // 원하는 것만 골라낸뒤 개발하기 a
  • map - 배열 요소에 대한 수정하여 반환
    • forEach와 같이 모든 원소에 접근 하되 원소의 수는 유지하되 원소 자체를 변경 할 수있다
    • filter 와 같이 배열 리턴
    • ['1','2','3'].map((x) => { return x+' 입니다.' }); // ['1 입니다','2 입니다','3 입니다'] //map + forEach ['1','2','3'].map((x) => { return x+' 입니다.' }) .forEach((x) => { console.log(x); }); // 1 입니다. // 2 입니다. // 3 입니다. // 원소중 3이상 인것 제곱인 배열로 만들어 콘솔로그 찍기 [1,2,3,4,5] .filter((x) => { // 원소중 3이상인것만 뽑아낸뒤 return x >= 3; }) .map((x)=>{ reutnr x * x; }) .forEach((x) => { console.log(x); })
  • reduce -
    • acc 라는 누산기에 값을 누적할 수 있다
    • 콜백함수 뒤의 2번째 인자로 초기값을 할당 받는다
      • // 콜백함수와 초기값을 인자로 받는다 // 리턴 결과를 다음 루프에 가져갈 수 있다 const result = [1,2,3].reduce((acc) => { return acc; },0); console.log(result); // 0; // 배열의 모든 요소 합을 구하는 예제 // 초기값을 0으로 두고 acc 에 계속 더해가면서 루프가 끝나면 acc를 리턴한다 const result = [1,2,3].reduce((acc,current_value) => { return acc + current_value; },0); console.log(result); // 6;
 
 
  • for of -
     
     
    반복문 별 속도 테스트
    // 공배열을 만들고 각 루프의 diff time 체크 const number = 3000000000; const array = new Array(number).fill(); console.log(number+'건 TEST'); const for_date = new Date(); for(let index=0; index<array.length; index++){} console.log('for speed : ',new Date()-for_date); const map_date = new Date(); array.map(() => {}); console.log('map speed : ',new Date()-map_date); const each_date = new Date(); array.forEach(() => {}); console.log('each date : ',new Date()-each_date); const while_date = new Date(); let index=0; while(index<array.length){ index++; } console.log('while date : ',new Date()-while_date);
    • 300000 건 TEST (30만건) for speed : 7 map speed : 19 each date : 9 while date : 5
    • 30000000 건 TEST (3억건) for speed : 34 map speed : 1427 each date : 657 while date : 3
     
    댓글 0

    등록된 댓글이 하나도 없습니다...😢