함수형 프로그래밍을 부합하게 해주는 for-each 함수  


Array.prototype.forEach()


arr.forEach(callback[, thisArg])

callback

각 요소에 대해 실행할 함수

currentValue

> 배열에서 현재 처리 중인 요소

index

> 배열에서 현재 처리중인 요소의 인덱스

array

> forEach() 가 적용되고있는 배열

thisArg

선택사항, callback 을 실행할때 this로서 사용하는 값


반환값


undefined


** Exception 처리를 하지 않는 한 forEach 를 정지 또는 탈출이 불가능합니다.

(stop,break,continue, 등등) -> 이 행동이 필요한 경우는 forEach 의 잘못된 사용

기본 for문을 사용하길 권장

[참조] developer.mozilla.org


forEach () 의 함수 사용의 예


1
2
3
4
function logArray(element,index,array){
            console.log('a[' + index + '] = ' + element);
}
[2,5, , 9].forEach(logArray);


결과


a[0] = 2

a[1] = 5

a[3] = 9


this arg를 사용시 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Counter(){
    this.sum = 0;
    this.count = 0;
}
Counter.prototype.add = function(array){
        array.forEach(function(entry){
            this.sum += entry;
            ++this.count;
        },this);
    ///   ^ this 확인
}; // Counter.prototype.add = function ...
 
var obj = new Counter();
obj.add([2,5,9]);
 
/*
 forEach 함수의 function(entry) 옆 thisarg부분을 Counter의 this를 넘김으로써
Counter Object의 add 함수를 추가하면서 object자체의 sum과 count값을 접근하여서
수정할수 있게 된다.  이와같은 this를 넘겨서 사용도 가능
*/

결과

obj.count

3

obj.sum

16



Simple for-each 작성



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
32
33
34
35
36
37
38
39
40
41
42
// sample function forEach
function forEach_(list,callback)
{
    for (var n=0; n< list.length;n++)
    {
        callback.call(list[n],n);
    }
}
/*
    list :
        array 형태의 배열을 파라미터로 받음
    callback :
        첫번째 파라미터로 들어온 list를 순회하여서 해당 함수(callback)으로 던져준다.
     
     
    call 은
    (1) function, (2) ...... 의 형태를 띄며
     
    1. array_ 가 첫번째 파라미터로 들어간다. list 과 매핑
 
    2.  for문을 통해서 list 의 길이만큼 순회를 한다.
 
    3.  list[n] 값과 index 값을 callback 에 넘긴다. 동시에 call을 사용하여서 넘김
 
    //** call이 없을 경우에 list[n] ,index가 넘어가면 callback function 에서 index에 array[n] 인 값이 들어갈것이다.index가 아니라
     
    call을 같이 사용하였기 때문에 들어온 array 에 대한 this 를 가지고
     
    두번째 n 을 파라미터로넘기기 때문에 n = index로 넘어가고
     
    this는 넘기는 list[n] 자체가 들어간다.
 
    해당 코드를 종료 보면
     
     
*/
//  smaple Array
    var array_ = ['First','Second','Third','Forth','Fifth'];
forEach_(array_,function(index){
    console.log(this);
this == array_[index] ? console.log(array_[index]) : console.error("not Exist");
});



결과




this는 list[n]


index는 n 이 들어감이 확인된다. 'First', 'Second'가 나온이유는 array_[index]로 출력하였기 때문 


callback 함수 만드는법을 따라 보았다. 아 물론 스터디이기 때문에 책을 보고 



Posted by 깍돌이

블로그 이미지
QA를 업으로 삼고 있습니다.
깍돌이

태그목록

Yesterday
Today
Total

달력

 « |  » 2025.4
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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함