[javascript] for in, for of, forEach
2022. 3. 21. 11:29ㆍStudy/Javascript
for in문
for in문은 객체의 반복문으로 객체의 프로퍼티를 순회하며 작업을 수행한다. 이 때, 열거가 가능한 ([[Enumerable]]속성이 true인) 객체만 사용이 가능하다.
객체의 key값에 접근할 수 있으며, 이를 이용하여 속성값을 출력하거나 저장할 수 있다.
예제
const obj = {
name: 'nabi',
age: 2,
type: 'korean shothair',
}
for(const key in obj){
console.log(`${key}:${obj[key]}`)
}
//name:nabi
//age:2
//type:korean shothair
const list = {
person1: {
id: 1,
name: "kim",
age: 20,
},
person2: {
id: 2,
name: "lee",
age: 22,
},
person3: {
id: 3,
name: "park",
age: 21,
},
}
const posts = []
for(const key in list){
posts.push(list[key])
}
console.log(posts)
//[{id: 1, name: 'kim', age: 20},{id: 2, name: 'lee', age: 22},{id: 3, name: 'park', age: 21}]
for of문
for of문은 반복 가능한(iterable한) 객체에 사용할 수 있는 반복문이다.
iterable 객체는 배열, 문자, Map, Set, NodeList 등이 있다.
for of문은 주로 배열 안의 값들을 하나씩 처리하고자 할 때 사용된다.
예제
const name = ['lee', 'kim', 'park', 'choi'];
for(let item of name){
console.log(item)
}
//lee
//kim
//park
//choi
const list = [
{
id: 1,
name: "kim",
age: 20,
},
{
id: 2,
name: "lee",
age: 22,
},
{
id: 3,
name: "park",
age: 21,
},
]
const posts = []
for(let item of list){
posts.push(item)
}
console.log(posts)
//[{id: 1, name: 'kim', age: 20},{id: 2, name: 'lee', age: 22},{id: 3, name: 'park', age: 21}]
forEach()
forEach는 배열 전용 메서드로 배열을 순회하여 반복 실행할 때 사용한다.
forEach의 콜백함수 파라미터에는 현재 요소값(currentElement), 현재 요소 인덱스(index), 원본 배열(array)가 들어간다.
예제
const list = ['철수', '영희', '길동'];
list.forEach((value, index, array)=>{
console.log(`index: ${index} value: ${value} array: ${array}`)
})
//index: 0 value: 철수 array: 철수,영희,길동
//index: 1 value: 영희 array: 철수,영희,길동
//index: 2 value: 길동 array: 철수,영희,길동
const list = [
{
id: 1,
name: "kim",
age: 20,
},
{
id: 2,
name: "lee",
age: 22,
},
{
id: 3,
name: "park",
age: 21,
},
]
const posts = []
list.forEach((value, index)=>{
posts.push({id:value.id, name:value.name, age:value.age})
})
console.log(posts)
//[{id: 1, name: 'kim', age: 20},{id: 2, name: 'lee', age: 22},{id: 3, name: 'park', age: 21}]
성능은 forEach > for of > for in 순서대로 속도가 빠르다고 하니 참고해서 사용하면 될 듯 하다.
'Study > Javascript' 카테고리의 다른 글
[javascript] Session storage, Local storage, Cookie (0) | 2022.12.02 |
---|---|
[javascript] 이벤트 버블링, 캡처링 (0) | 2022.05.28 |
[javascript] 배열 고차함수 map, filter, reduce (0) | 2022.03.26 |
[javascript] http와 https (0) | 2022.03.04 |
[javascript] this (0) | 2022.03.03 |