Search

반응형

'코딩'에 해당되는 글 24건

  1. 2022.06.25 [자바스크립트]for..in문과 for..of문 알아보기 편. (루프와 반복)
  2. 2021.08.08 [왕초보]자바스크립트(JavaScript) 시작에 앞서...
반응형

안녕하세요. 신기한 연구소입니다.

이전 포스팅은 for에 대해 알아봤습니다.

자바스크립트는 for..in문과 for..of문도 있답니다.

그래서 이번 포스팅은 for..in문과 for..of문에 대해 알아보겠습니다.

뭔가 특수한 경우에 사용하는 구문같은데요.

어떤 용도로 사용하는지 하나씩 살펴보겠습니다.

 

for..in문

for..in문은 객체를 가지고 반복문을 사용하는 구문인데요.

다음과 같습니다.

1
2
3
for (val in obj){
  구문;
}
cs

뭔가 어려워보입니다.

하지만 걱정 마세요.

바로 이해할 수 있게 진행해보도록 할게요.

그 전에 먼저 객체의 구성을 살펴볼께요.

객체는 다음과 같이 선언 및 할당합니다.

1
2
3
4
var obj = {key1 : value1, 
           key2 : value2,
           ...
           keyn : valuen};
cs

나중에 객체에 대해 더 자세히 알아보도록 하고

우선 샘플용으로 가볍게 접근해봅니다.

객체는 중괄호 { } 안에 콤마 , 로 구분하고 콜론 : 으로 키와 값을 매칭한답니다.

key1은 값을 찾을 때 사용하는 키값이고

value1은 키에 대응하는 값입니다.

샘플로 하나 만들어볼까요?

커피 전문점에서 커피를 선택했을 때 받을 데이터를 구성해봅니다.

1
2
3
4
var selectedMenu = {menu : 'Iced Americano',
                    shot : 2,
                    size : 'small',
                    price : 4500}
cs

2샷 아이스 아메리카노 small 사이즈네요.

가격은 4500원이구요.

고객이 선택한 메뉴가 담긴 객체를 전달 받았습니다.

객체의 속성(menu, shot, size, price로 key)은 4가지 입니다.

이 속성을 반복문을 통해 하나씩 받아서 출력하고 싶다면

바로 for..in문을 사용하면 된답니다.

바로 아래와 같이 말이죠~

1
2
3
4
5
6
7
8
9
var selectedMenu = {menu : 'Iced Americano',
        shot : 2,
        size : 'small',
        price : 4500};
 
for (var nm in selectedMenu){
    console.log(nm);
    console.log(selectedMenu[nm]);
}
cs

어떤 결과가 나오는지 실행해봤나요?

nm은 selectedMenu의 속성값을 받아옵니다. (menu, shot, size, price)

selectedMenu[nm]은 해당 속성의 값을 받아오게 됩니다. ('Iced Americano', 2, 'small', 4500)

축하합니다.

이제 for..in문을 어떻게 사용하는지 알게되었습니다.

한가지 주의할 점이 있습니다.

for..in문을 배열에서 사용할 경우 다음과 같은 예상하지 못한 결과가 나타납니다.

1
2
3
4
5
6
7
var arr = ['a''b''c'];
 
arr['nm'= 'arrs';
 
for (var arrNm in arr){
    console.log(arrNm);
}
cs

arr은 3개의 값을 가지고 있습니다.

arr[nm]으로 사용자 정의 속성을 추가했습니다.

만약 arr에서 3개의 값만 추출해서 사용하고 싶다면

for문을 사용하세요.

for..in문을 사용하면 네번째로 nm도 같이 받게 되어

원치 않은 결과가 나올 수 있습니다.

for문은 순수한 배열 인덱스로 추출할 수 있지만

for..in문은 배열 인덱스 뿐만 아니라 추가된 사용자 속성까지 전부 가져오거든요.

 

for..of문

이제 for..of문을 알아보겠습니다.

for..of문은 반복 가능한(Iterating) 객체(배열, Map, Set, argument 객체 등)

활용해서 해당 값을 가져옵니다.

반복 가능해야 하기에 위에서 사용한 객체 selectedMenu는 사용할 수 없답니다.

배열처럼 인덱스가 들어가고 반복이 가능한 객체만 가능하다는거죠.

중요한 점은 위에서 만든 배열에서 nm 속성을 추가했는데요.

nm은 arr배열의 순수한 반복 데이터가 아니고 임의로 넣은 데이터라

for..of에서 호출되지 않습니다.

다음 예를 보면 이해가 될거에요.

구조는 for..in문과 동일하지만

in 대신 of를 넣고 of 뒤에는 반복 가능한 객체만 넣을 수 있답니다.

1
2
3
4
5
6
7
var arr = ['a''b''c'];
 
arr['nm'= 'arrs';
 
for (var arrNm of arr){
    console.log(arrNm);
}
cs

of를 사용했습니다.

결과는 arr의 순수한 반복 데이터(값)만 추출된답니다. ('a', 'b', 'c')

그렇다면..아래 예제는 어떨까요?

1
2
3
4
5
6
var str = 'Homerun!'
 
for (var arrNm of str){
    console.log(arrNm);
}
 
cs

문자열도 순서대로 문자가 붙어있는 구조입니다.

그래서 한글자씩 출력이 된답니다.

프로그래밍을 잘 하고 싶다면 절대 눈으로 보면 안됩니다.

직접 코딩해보고

이렇게 저렇게 바꾸기도 하면서

정확히 이해하는것이 중요하답니다.

이제 for문에 이어

for..in문과 for..of문에 대해 알아봤습니다.

이해가 되었나요?

오늘 포스팅은 여기까지입니다.

즐 코딩하세요

반응형
반응형

안녕하세요. 신기한 연구소입니다.

2월부터 투입되었던 프로젝트 철수를 눈앞에 앞두고 있는데

말년 병장같은 기분으로 출근을 하고 있습니다. (으흐흐)

얼른 인수인계를 마치고 떠나고 싶네요..ㅋㅋ

다음 프로젝트에 대해 생각하지는 않고 여름휴가도 좀 챙기고

술 한잔 하면서 스크립트를 다시 공부해야겠다는 생각을 하게 되었네요.

 

지금도 웹스퀘어(Web Square)라는 상용툴을 사용 중인데

내부는 자바스크립트(JavaScript)로 만들어진 프레임워크인 듯합니다.

개인적으로 상용 툴을 별로 좋아하지는 않지만(지원 등등 문제로)

현실적으로 프로젝트를 너무 가려서 하기는 힘들기에.. 그냥 받아들인답니다.

짬밥이라고 하나요?

처음이 어렵지. 몇 번 하다 보면 다 비슷비슷하답니다.

여러분들도 처음이라 그런 거예요.

사실 학원에서 배워서 실전에서 바로 투입 후 개발을 잘하기는 힘들 겁니다.

저 또한 그랬던 시간이 있었거든요. ㅎㅎ

 

최근까지 X-Flatfrom이라는 툴을 장기간 사용했기에

발전해가는 자바스크립트를 접할 기회가 없었답니다.

예전 두꺼운 자바스크립트(javascript) 책으로 독학하면서 

열심히 코딩했던 기억이 나네요.

그 책을 다시 보려고 했지만 이제 오래된 책이 되었기에

새로운 책을 찾아 도서관에 방문해서 몇 권 대출해왔습니다.

사실 다양한 프로그래밍 관련 책들이 계속 나오고 있지만

비슷하거나 개인적으로 맘에 들지 않은 경우가 종종 있기에

도서관에서 (그래도 나름 최신판으로 나옵니다) 먼저 대출해서

쭉 읽어보고 난 뒤 맘에 들면 구매를 하고 있답니다.

책을 빌려오고 읽으면서 스마트폰을 잠시 열었는데...

어떻게 알았는지 유튜브에서도 코딩 열풍에 관한 영상들이 나오기 시작하더군요.

그래서 관심을 갖고 영상들을 봤는데

요즘 코딩 학원도 다니고 취업을 위해 고생하는 친구들이 많더군요.

저 또한 학원도 다녀보고 독학도 해보고 그렇게 취업을 해서

20년 넘게 IT 개발을 하고

다양한 언어와 툴 (Delphi, VB, PB, C/C++, JavsScrip, Ajax, jQuery, ProC, Java 등등)

을 사용하면서 시중에 나온 책과 현실과의 차이를 많이 느끼기도 했습니다.

 

처음 SQL을 학원에서 배웠을 때

책 보고 내용은 이해했지만..

그래서 뭘? 어떻게? 어디서? 실전에 사용하는지 전혀 알 수 없었고

답답했던 기억이 나네요.

새로 시작하는 여러분들도 분명 그런 답답하고 힘든 마음이 있을 거라 생각됩니다.

 

새로 시작하는 마음으로 정리도 하고

정말 최대한 개 쉽게 재미있게 포스팅을 해보려고 합니다.

 

또한 실전에서 프로젝트를 하면서 필요한 부분들을 

기억을 더듬어 대왕초보도 이해할 수 있도록

준비해보려고 합니다.

 

직장 생활하고 프로젝트를 진행하다 보면 공부할 시간이 많지는 않지만

비전공으로 이 세계의 생활에 동참하고 싶은 친구들에게

조금이나마 같이 공감하는 장소가 되었으면 하네요.

다들 조금은 여유를 가지고 같이 자바스크립트(JavaScript)

왕초보-> 실전의 길로 가보도록 해용~~~

 

빨리 가서 책 봐야겠습니다.

반응형