[js] for(in, of), foreach, map 비교

2020. 11. 30. 21:14Frontend/JS

** 초보 개발자로 글에 수정해야 할 부분이 있을 수 있습니다. 정정해야 할 부분은 댓글로 소통 부탁드립니다!

 

js에는 다양한 배열 순환 방법이 존재합니다. 

for(in, of), foreach, map 비교를 통해 올바른 사용법을 알아보겠습니다.

 

1. for(in, of)

기본적인 반복문의 구조는 아래와 같은 구조로, 배열 순환 시 break; 적용 가능합니다.

 

for ([initialization]; [condition]; [final-expression]) {
	// iterating section
}

 

1) for(var a in b)

객체에서 사용 가능한 문법입니다.

 

var obj = { a: '가', b: '나', c: '다' }; 

for (var key in obj) { 
	console.log(key, obj[key]); // a 가, b 나, c 다 
}

 

2) for(var a of b)

Collection(Array, List ... etc) 전용 반복 구문으로 

컬렉션 객체가 [Symbol.iterator] 속성을 가지고 있어야 사용 가능합니다.

 

var iterable = [10, 20, 30]; 

for (var value of iterable) { 
	console.log(value); // 10, 20, 30 
}

 

2. foreach

배열의 각 요소에 대해 callback을 실행합니다.

따라서 break 사용이 불가능합니다.

(그렇다면 return 사용하면 멈출 수 있긴 하겠다.

하지만 forEach에서 callback()을 customizing 하여 사용하지 않는다면, 불가능..(?))

 

array.forEach(callback(currentvalue[, index[, array]])[, thisArg]))

 

callback() 함수의 인자는

Parameter Desc
currentValue array[index]
index array의 index
array[] 순회할 array
thisArg(Optional) callback 함수의 this 에 해당하는 값

 

그렇다면, thisArg란 어떤 값일까?

단순히 글 만으로는 이해가 되지 않아 코드로 그 의미를 파악해보겠습니다.

(어디에 사용해야 잘 썼다고 소문이 날까나...)

 

const arr = [0,1,2,3,4,5,6,7,8,9,10];
const obj1 = {name: "kim"};
const obj2 = {name: "park"};

arr.forEach(function(element){
    console.log(`${this.name} - ${element}`);
}, obj1);
/*
kim - 0
kim - 1
kim - 2
kim - 3
kim - 4
kim - 5
kim - 6
kim - 7
kim - 8
kim - 9
kim - 10
*/
arr.forEach(function(element){
    console.log(`${this.name} - ${element}`);
}, obj2);
/*
park - 0
park - 1
park - 2
park - 3
park - 4
park - 5
park - 6
park - 7
park - 8
park - 9
park - 10
*/

 

 

3. map

 

array.map(callback(currentValue[, index[, array]])[, thisArg])

 

 

[References]

 

javascript - foreach 문 , for in 문 , for of문

◎ foreach 문 ▼ 내용 foreach 반복문은 오직 Array 객체에서만 사용가능한 메서드입니다. (ES6부터는 Map,Set 지원) 배열의 요소들을 반복하여 작업을 수행할수 있습니다. foreach구문의 인자로 callback함

dydals5678.tistory.com

 

[JavaScript] for vs. forEach vs. map

자바스크립트의 for( ), forEach( ), map( ) 함수에 대해 비교를 통해 알아보겠습니다.​​1) for( )초깃...

blog.naver.com

 

자바스크립트 Array forEach

이번 글에서는 자바스크립트 Array(배열) 객체의 메서드인 forEach에 대해 작성하겠습니다. forEach는 for문과 마찬가지로 반복적인 기능을 수행할 때 사용합니다. 하지만 for문처럼 index와 조건식, inc

yuddomack.tistory.com

'Frontend > JS' 카테고리의 다른 글

[js] event 전파 멈추기  (0) 2021.06.24
[js] object to array 변환  (0) 2021.06.23
[js] javascript 깔끔한 코드를 위한 꿀팁 10  (0) 2021.06.22
[js] sort() 함수의 compare() function parameter  (0) 2021.06.09
[js] base64 암호화  (0) 2021.05.10