34일차 TIL : 자바스크립트 기초

변시윤·2022년 12월 3일
0

내일배움캠프 4기

목록 보기
34/131
post-custom-banner

학습내용

배열

  • pop/pushshift/unshift
  • 반복문

배열

특성

  • [대괄호]로 접근 및 제어

  • 객체에 해당
    객체에는 속성(데이터 타입)과 메서드(함수)가 항상 존재한다.

  • length 속성

    let test = [];
     test[200] = 3;
     >
     console.log(test.length); // 201

    배열의 길이는 201이지만 배열의 요소 갯수는 1개(3)이다. length 속성은 배열의 최대 인덱스에서 +1한 값을 의미할 뿐, 실제 배열 안에 들어있는 요소의 갯수와는 상관이 없다.

  • 배열 요소에 모든 데이터 타입 가능

    let test = [
        1,
        'cinephile',
        function(){
            return 'cinephile'
        },
        [4,1,2]  
    ];

    다른 언어의 배열은 요소의 데이터 타입이 통일되어야만 하지만, 자바스크립트는 서로 다른 데이터 타입도 가능하다.


요소 추가 및 제거

push()와 pop()

  • push() 배열의 마지막 요소 추가

    let array = [1,2,3];
    console.log(array); // [1,2,3]
    
    array.push(4);
    console.log(array); // [1,2,3,4]
  • pop() 배열의 마지막 요소 제거

    let array = [1,2,3];
     array.pop();
     console.log(array); // [1,2]

마지막으로 추가한 데이터가 가장 먼저 제거되는 stack의 구조와 일치

shift()와 unshift()

  • unshift() 배열의 첫 번째 요소 추가

    let array = [1,2,3];
    array.unshift(0);
    console.log(array); // [0,1,2,3]
  • shift() 배열의 첫 번째 요소 제거

    let array = [1,2,3];
    array.shift();
    console.log(array); // [2,3]

    제거된 요소가 영구적으로 사라지는 것은 아니며 필요한 경우 사용 가능

가장 먼저 추가한 데이터가 가장 늦게 제거되는 que의 구조와 일치
추가/제거 될 때마다 인덱스를 재배열 해야하기 때문에 사용을 권장하지 않음


반복문

배열의 속성(length)은 반복문에 최적화 되어있다.

  • 기본형

    let testArr = ['봄','여름','가을','겨울']
    
    for(let i = 0; i < testArr.length; i++){
        console.log(i) // 0 1 2 3
        console.log(testArr[i]); // 봄 여름 가을 겨울
    }
  • for ~ in

    for(i in testArr){
        console.log(i); // 0 1 2 3
        console.log(testArr[i]) // 봄 여름 가을 겨울
    }

    기본적으로 in 앞에 오는 요소가 key를 반환한다. 기본형처럼 배열[key] 형식에서는 value를 반환한다.

💡 배열은 객체에 해당되기 때문에 자동으로 key(=index)값이 부여된다.

  • for ~ of
    for(i of testArr){
        console.log(i); // 봄 여름 가을 겨울
    of 앞에 오는 요소가 value를 반환한다.




기초가 버거운 편은 아니기에 후발대반을 신청해놓고도 괜히 한 건 아닐까, 이 시간에 심화를 더 열심히 해야하지 않을까 고민했었는데 결론부터 말하면 매우 탁월한 결정이었다. 기초적인 로직 정도는 스스로 구현할 수 있지만 그렇다고 기초를 마스터 한 것은 아니었기에 신청한 거였는데 나의 목적에 딱 부합하는 강의였다. 특히 for ~in문과 for ~of문은 매번 헷갈려서 반복문을 사용할 때마다 검색해보고 썼었는데 이번 기회에 확실히 알게 되었다. 또 push/pop, shift,unshfit 역시 심화에서 배운 stack/que와 개념을 연결시킬 수 있어서 유익했다. 심화도 중요하지만 기초를 단단히 쌓지 않으면 심화 과정을 제대로 이해할 수 없을 거라고 생각하기에 조금 느리더라도 개념을 탄탄하게 정립해 나갈 생각이다.

profile
개그우먼(개발을 그은성으로 하는 우먼)
post-custom-banner

0개의 댓글