전체 글 (165)

05
26

1. 빈 배열의 특성

  • '주소 값이 다르다'라는 말은 한 개의 배열 칸을 벗어나서, 다른 배열에 있다고 생각하면 된다.
     그래서 빈 배열을 더해주면 다른 배열이 된다!
    • 그래서 대부분 간단하게 length를 통해 빈 배열인지 확인하게 된다. 가장 간단하기 때문에!
  • 배열은 순서가 중요하다!

2. 우리가 많이 쓰는 slice에 대한 고찰

  • 슬라이스는 복사 하는 느낌이 강하다. 왜? 원본은 변하지 않고, 자른 것만 반환하기 때문이다.
  • 시작점(이상)부터 끝점(미만) 까지를 말한다.

3. 어려운 객체를 다시 생각해 보자

  • '키'와 '벨류'는 항상 함께 하자.
    - 객체는 의미가 중요하다!

4. for문 안의 in과 of

  • for문안의 모든 key 값들을 전부 훍는다.(for...in은 객체, for... of는 배열)
    • 이때, key의 벨류를 호출 하려면 key값의 이름[key] 하면 다 나온다!
      • 브래킷 노테이션만 벨류를 가져올 수 있다는 것을 이용하면 알 수 있다

5. 배열의 판단

  • arr.length === 0
  • ! arr.length (0은 falsey값이기 때문에 가능!)

6. break

  • 반복문을 작성 후 원하는 조건을 달성한 후에 그 부분까지 끊어 버린다.

7. continue

  • 조건을 만족 하면서 진행될 때, 원하는 조건을 만족시킨 부분은 넘어서고 나서 다시 진행된다.
 굳이, 나온 결과를 컴퓨터 힘들게 괴롭히지 말자.
멈춰주거나 필요없을 때는 건너뛰어서 인간미를 보여주자
COMMENT
 
05
25

1. 배열에 유용한 메서드

  • console.table(arr) : console.log의 진화판. 이제 index와 값을 표로 보여준다!
  • arr.push('배열에 넣고 싶은 엘리먼트') : 배열의 가장 뒤에 엘리먼트를 추가한다.
     (값은 엘리먼트를 하나 넣은 후의 length를 반환!)
  • arr.pop () : 배열의 가장 뒤의 엘리먼트를 빼버린다. 그래서 빈칸으로 쓴다.
     (값은 빠지는 엘리먼트를 반환!)
  • arr.unshift('배열에 넣고 싶은 엘리먼트') : 배열의 제일 앞의 엘리먼트를 추가한다.
     (값은 엘리먼트를 하나 넣은 후의 length를 반환!)
  • arr.shift() : 배열의 제일 앞의 엘리먼트를 빼버린다.
     (값은 빠지는 엘리먼트를 반환!)
    • 깔끔한 정리 => 앞에 넣고(unshift), 앞에 빼고(shift), 뒤에 넣고(push), 뒤에 빼고(pop)
    • 반환할 때의 값을 주의해라! 그대로 retrun 하면 length나 빠질 엘리먼트 하나만 나온다. 계산 후에 원래 배열만 리턴하자!
  • indexOf('찾고자 하는 엘리먼트의 이름') : 배열 안에 있는 엘리먼트를 찾을 수 있다.
    • 결과 값으로는 그 엘리먼트가 있는 index값이 나오고, 만약 없으면 -1이 나온다.
    • Tip : indexOf('찾고자 하는 엘리먼트의 이름')!== -1 하면 블리언 값으로도 찾을 수 있다.
       있다면 index값을 반환하고, 없으면 -1을 반환하기 때문!
  • word.includes('찾고자 하는 엘리먼트 이름') : indexOf 써서!== -1 하는 것과 같은 결과를 준다. 블리언 값으로 나온다.
  • str.concat(배열 그대로 더할 배열) : 배열 + 배열이면 string 타입 그대로 더해 주지만, 이것으로 배열 그 자체로 더 해서 배열들의 배열을 만들 수 있다.
  • Math.max.apply(null, arr) : 배열 중에, 가장 큰 요소를 반환한다.
  • arr.splice(arr, arr에서 빼 버릴 index) : 특정 index의 엘리먼트만 뺀다. 앞뒤 말고 중간에서도 가능!
    • arr.splice(넣을 index, 그 뒤로 몇 개를 빼고 넣을 것인지, 넣을 엘리먼트) : 심지어 중간에 엘리먼트를 넣을 수 도 있다.
  • arr.join('기준으로 합쳐줄 문자열') : 기준을 하나 정해서 그 기준을 다 없애고 하나의 문자로 만들어 버린다.

2. 피보나치의 수열

 현재 항의 값이 이전 2개의 항의 합으로 계산되는 수열.

  • 이라고는 하나... 식으로 보는 게 이해가 빠르다.
    f(n) = {0, 1, F(n - 1) + F(n - 2)···}
    • 그 전전의 숫자부터 영향을 받는다고 생각하면 쉽다. 정말 단순하게 예시를 들자면,
        아침에 먹은 밥이 소화가 덜되서 위장에 남아 있는데 다시 점심을 먹어서 채운다!
      • (이해가 안되면 정상이다. 이해하려 하지 마라)
    • 이걸 자바스크립트로 가져오면?

function fibonacci(num) { let result = [0, 1] //0과 1일 때는 0과 1을 그대로 반환해야 하기 때문에 처음부터 넣어 둔다.
	if(num === 0) { //하지만 num가 0인 경우, [0, 1]을 반환하기 때문에 따로 조건문을 설정했다.
    	return [0]; }
    for(let i = 2; i <= num; i++) { //for문으로 2부터 num전까지 index의 모든 숫자를 얻을 수 있다.
    	result.push(result [i - 1] + result[i - 2]) //피보나치의 수열의 식을 그대로 사용! 그 후 배열에 더해준다. }
        	return result; 
            }

3. 객체

  • 여러 개의 변수가 자주 교체되어야 하는 경우 매우 화가 난다! 심지어 변수의 변화 속에서 관계성도 전혀 없다면??
  • 배열을 쓸 경우, 마찬가지, 각 index 값이 어떤 정보를 담고 있는지 알 수 없다.
    이럴 때 사용하는 것이 '객체'이다.
  • let 책상 위 물건 = { 컴퓨터 관련: '노트북'... 음악 관련: '이어폰'... 환경 관련: '선풍기'... };
  • 중괄호로 객체를 만들어준다!
  • '컴퓨터 관련'은 키(key)가 된다.
  • :(콜론) 뒤에 오는 것이 '노트북', '충전기' 등이 값(value)이 된다.

4. 객체의 값을 사용하는 법

  1. Dot motaion :
    • 객체 이름을 적고,.(Dot)점을 찍어서 값을 반환한다.
  2. 책상 위 물건. 음악 관련; => '이어폰'
  3. Bracket notation :
    • 객체 이름을 적고, ''대괄호와 그 안에 ' '를 쳐서 값을 반환한다.
    • ' '따옴표를 놓치면 큰일 난다! 따옴표가 없다면, '키'가 아니라 '변수'로 받아들이기 때문에,
       이 전에 변수 지정을 해주지 않아서 값을 찾을 수 없다고 에러가 뜰 거다.
    • 이 귀찮은걸 왜 쓰나? Dot notation 만 쓰면 안 되나?? : 안된다. 키값이 변화할 수 있으면, 무조건 bracket 써야 한다.
       정해진 키가 있을 경우에만 dot notation을 사용한다.
  4. 책상 위 물건['환경 관련'] => '선풍기'

5. 객체에 사용할 유용한 메서드

  • 이건 메서드는 아니지만... dot/bracket notation을 이용해 값을 추가할 수 있다. Ex:
  • 책상 위 물건['잡동사니'] = '커피통', '먼지'... 책상위 물건.보이지 않는것 = ['희망', '공부의 끝', '잠'...] //배열도 상관없다! 물론 블리언이나 숫자 뭐든지 다 된다!
  • delete : 삭제도 가능하다.
  • delete 책상위 물건. 잡동사니; //잡동사니 키와 값 모두 삭제한다.
  • in : 키의 존재 유무를 알 수 있게 됨. Ex :
  • '보이지 않는 것' in 책상 위 물건; //true; '놀 시간' in 책상위 물건; //false;

배열을 어찌 저지 끝냈다. 나쁘지 않은 것 같다.
오타가 여전히 많다. 페어 아니었으면 하루 종일 걸렸을 것 같다. 천천히 쓰자.
검색을 자주자주자주 더 자주 사용하자.

COMMENT
 
05
24

1. 여러 명이 동시에 작업을 할 때 주의할 점

  • pull, push 하기 전에 항상 add 하고 commit 해야 한다. 잊기 쉽다.
  • 즉, 어디 overflow에 파일이 있는지를 계속 알고 있어야 한다. 자꾸 pull만 하면 파일 날아갈 수도 있다!
  • Remote Repository의 링크를 잘 확인 해야 한다. 같은 파일을 다시 올리게 된다면 링크 뒤에 -1이 붙거나 한다.
     이때 각자 다른 Remote Repository에서 놀고 있다면 서로의 변경 사항이 반영되지 않는 기적을 볼 수 있다.
  • 가장 중요한건, pull과 push를 신중하게 해라. 그러기 위해서는 계속 status를 해보면 될 것이다!
  • 일단 충돌이 나면, 한쪽에서 충돌 수정을 끝마친 후, 다시 pull 해서 안정된 상태로 만든 다음 작업하는 것이 낫다.
  • 결론 : 마스터 브렌치를 하나 관리하며, 기능마다 branch를 만들고
     (그래서 대부분 branch 이름이 기능이다.) 완성되면 merge 하게 되는 것이다!!

2. 별다른 사항

  • GUI 툴도 있다. '소스트리'(우분투에서 안됨)나 '스마트 깃'(유료화됨) 도 있다. 그냥 CLI가 낫겠다.
  • 깃 헙에서 Insights -> Network 창을 보면 어떤 상황으로 연결되어 있는지 알 수 있다.
COMMENT
 
05
23

1. 맨 뒤 콤마를 지울 수 있다!?

  • 함수 str.replace(이전 문자열, 바꿀 문자열)를 사용한다. 이 함수는 문자열에서 원래 문자열을 찾아서 내가
    설정한 바꿀 문자열로 바꿔버린다. 즉, 첫 번째 문자열을 ', '로 놓고, 두 번째를 ''(빈칸)으로 놓으면 없어진다!!
    • Ex : str.replace(/,\s*$/, ""); => 쉼표와 그 뒤 공백 문자를 빈칸으로 교체.
    • str.slice(0,-1); => 마찬가지. 가장 마지막 문자열을 잘라줌.

오늘은 복습 위주로 다시 알던 내용들을 시험해 보았다.
문제 푸는 속도가 엄청 늘었다.
다양한 방식으로 같은 문제도 접근한다.
다양한 메서드들을 찾아 적용시켜서 다른 방식으로 같은 문제를 더 단순하게 풀어본다.

COMMENT