| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | 
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | 
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 
| 26 | 27 | 28 | 29 | 30 | 31 | 
- underbar
- array
- 해커톤
- 코드스테이츠
- Instantiation Patterns
- 알고리즘
- 코딩
- method
- 포스기
- 리액트
- 초보
- vscode
- 일상
- 제일어려워
- underscores
- 개발
- nqueens
- this
- JS
- DOM
- 클라이언트
- 엔퀸즈
- 자바스크립트
- JavaScript
- 공부
- 취업
- grpahQL
- react
- ftech
- 연습
- Today
- Total
analogcoding
Array Method -2 본문
간단한 메소드들을 앞전에 다루고 내가 고전하고있는 남은 메소드들을 적어보면
every / some / find / findIndex / filter / forEach /map / reduce / sort
* reduce <-(얘가 제일 많이쓰는데 내 기준 얘가 제일 어렵다..)
여기 2편에선 위 메소드의 대한 간단한 사용법과 기능을 다루고 다음 번엔 사용구조를 직접 작성하며 복습해볼 예정!
- 
Array.every() 
배열 안의 모든 요소가 주어진 함수를 통과하는지 테스트한다. 모든 요소가 통과하면 true 하나라도 통과하지 못하면 false 를 리턴한다.
빈배열의 경우 무조건 true를 반환한다.
callback함수는 1번 element , 2번 index , 3번 array를 인자로 갖는다.
let arr1 = [ 20 , 30 , 40 , 50 ]
     
function greaterThanTen(elements) {      //    (주어진 함수의 조건은 10보다 큰 수)
  return elements > 10 ;                 //         (모든 원소가 통과한다)
}
arr1.every(greaterThanTen) = true
- 
Array.some() 
배열 안의 어떠한 요소라도 주어진 함수를 통과하는지 테스트한다. 하나라도 통과하면 true 모든 요소가 통과하지 못하면 false 를 리턴한다.
빈배열의 경우 무조건 false를 반환한다.
callback함수는 1번 element , 2번 index , 3번 array를 인자로 갖는다.
let arr2 = [ 1 , 2 , 3 , 5 , 7 , 9 ]
function even(elements) {         //      (주어진 함수의 조건은 짝 수)
  return elements % 2 === 0 ;     //        (하나의 원소가 통과한다)
}
arr2.some(even) = true
- 
Array.find() 
주어진 함수를 만족하는 첫 번째 요소의 값을 반환하고 없다면 undfined를 반환한다.
callback함수는 1번 element , 2번 index , 3번 array를 인자로 갖는다.
let arr3 = [  1 , 2 , 4 , 6 ]
function even(elements) {       //            (주어진 함수의 조건은 짝 수)
  return elements % 2 === 0 ;   //   (2,4,6의 원소가 통과한다 , 제일 첫번 째인 2를 리턴)
}
arr2.find(even) = 2- 
Array.findIndex() 
주어진 함수를 만족하는 첫 번째 요소의 인덱스를 반환하고 없다면 -1 을 반환한다.
callback함수는 1번 element , 2번 index , 3번 array를 인자로 갖는다.
let arr3 = [  1 , 2 , 4 , 6 ]
function even(elements) {        //          (주어진 함수의 조건은 짝 수)
  return elements % 2 === 0 ;    //    (2,4,6의 원소가 통과한다 , 2의 인덱스를 리턴)
}
arr2.findIndex(even) = 1
- 
Array.filter() 
주어진 함수를 통과하는 요소를 모아 새로운 배열로 만들어 반환합니다.
callback함수는  1번 element , 2번 index , 3번 array를 인자로 갖는다.
let arr4 = [ 5 , 10 , 15 , 20 , 25 ]
     
function greaterThanTen(elements) {    //     (주어진 함수의 조건은 10보다 큰 수)
  return elements > 10 ;               //       (15,20,25의 원소가 통과한다)
}
arr1.filter(greaterThanTen) = [ 15 , 20 , 25 ]- 
Array.forEach() 
주어진 함수를 배열의 각 요소에 대해 실행한다. 반복문을 forEach로 구현할 수있다.
callback함수는 1번 element , 2번 index , 3번 array를 인자로 갖는다. 각 요소를 리턴할 수도 있다.
let arr5 = [ 1 , 2 , 3 ]
     
arr1.forEach( function (elements,index) {    //     (elements와 index를 호출)     
  return elements ;                          //   (elements와 index에 접근가능하다)     
}) =   1                                                                                                         
   //  2                                                                                                                
   //  3                                                                                                                
arr1.forEach( function (elements,index) {
  return index ;
}) =   0
   //  1
   //  2
- 
Array.map() 
배열의 모든 요소에 각각 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.
원배열은 그대로 유지된다.
callback함수는 1번 element , 2번 index , 3번 원본 array를 인자로 갖는다.
let arr6 = [ 1 , 2 , 3 , 4 , 5 ]
     
arr6.map( function (elements) {           
  return elements * 2 ;          //     ( 각 엘리멘트가 모두 통과한 값이 
})  = [ 2 , 4 , 6 , 8 , 10 ]     //          새 배열에 리턴 된다. )
arr6  = [ 1 , 2 , 3 , 4 , 5 ]
화살표함수 로 더 편하게 map을 사용할 수 있다. 다른 메소드들도 물론 사용가능하다.
     
arr6.map( x => x * 2 ) = [ 2 , 4 , 6 , 8 , 10 ]
- 
Array.reduce() 
배열의 각 요소에 대해 주어진 리듀서(reducer) 함수를 실행하고 하나의 결과값을 반환합니다.
ruduce함수는 네 개의 인자를 받는다.
1번 Accumulator : 누적값은 콜백의 반환값을 누적한다. 초기값(initialValue)이 주어진 경우 누적값의 첫번 째는 초기값이다.
2번 CurrentValue : 처리할 현재 요소.
3번 CurrentIndex : 처리할 현재 요소의 인덱스. 초기값(initialValue)이 있으면 0부터 , 아니면 1부터 시작한다.
4번 array reduce : 호출한 배열.
initialValue 최초호출에서 첫 번째 인수를 제공하는 값. 없을 경우 배열의 첫 번째 요소를 사용한다.
ㄴ 빈 배열에서 초기값 없이 reduce함수를 호출하면 오류가 발생한다.
let arr6 = [ 1 , 2 , 3 , 4 , 5 ]
arr6.reduce( function ( acc , curr  ) {                                                  
  return acc + curr                                                                              
}, 0 )  =  15                                
// 콜백함수호출마다 acc의 값은 1 , 3 , 6 , 10  
//              반환 값은  3 , 6 , 10 , 15  
// 초기값 유무의 차이
      
arr6.reduce( function ( acc , curr  ) {  
  return acc + curr
}, 5 )  =  20
// 콜백함수호출마다 acc의 값은  5 , 6 , 8 , 11 , 15 
//              반환 값은   6 , 8 , 11 , 15 , 20                                                                                                        
reduce() 의 경우 인자로 받는 값들이나 reducer를 이용해서 다른 함수의 기능을 수행할 수 있고 더욱 직관적인
코드를 작성할 수 있는 장점이 있다.
- 
Array.sort() 
배열의 요소들을 적절한 위치에 정렬한 후 리턴한다. 정렬방식은 구현방식에 따라 다르게 나타낼 수 있다.
첫 번째 인수가 두 번째 인수보다 작을 경우 - 값 , 첫 번째 인수가 두 번째 인수보다 클 경우 + 값으로 리턴된다.
let arr7 = [ 2 , 3 , 1 , 5 , 11 , 12 ]     //   ( 일반적으로 호출시 SCII 문자순서로 정렬 )
arr7.sort() =   [ 1 , 11 , 12 , 2 , 3 , 5 ]                                          
let arr8 = [ 'e' , 'a' , 'd' , 'b' , 'c' ]  //    ( abcd... / ㄱㄴㄷ...순으로 정렬 )
arr8.sort() = [ 'a' , 'b' , 'c' , 'd' . 'e' ]
                                       
let arr7 = [ 2 , 3 , 1 , 5 , 11 , 12 ]       
// ( 오름차순 정렬 )
arr7.sort( function ( a , b ) {                                               
             return  a - b ;                                                   
            })   =  [ 1 , 2 , 3 , 5 , 11 , 12 ]                                                 
// ( 내림차순 정렬 ) 
arr7.sort( function ( a , b ) {
             return  b - a ;    
            })   =  [ 12  , 11 , 5 , 3 , 2 , 1 ]
앞으로 계속 친해져야할 메소드들이기에 계속해서 복습하고 서칭할 예정이다.
'Study JS for me > Array Method' 카테고리의 다른 글
| Array Method - 이해하기 + (0) | 2019.04.23 | 
|---|---|
| Array Method - 이해하기 (0) | 2019.04.23 | 
| Array method - 1 (0) | 2019.04.21 |