180917 TIL Lec2 객체

» 1막, TIL (Today I Learned), 코드스쿼드

알고리즘

  • 약수더하기
  • 김서방찾기
  • 오늘부터 다른 사람 풀이 중 괜찮은 것을 같이 정리했다. 굉장히 재밌고 기발한 코드가 많다ㅋ

객체

  • 객체 선언: key값에는 따옴표 필요 없음
const obj = {name : "crong", age : 20}
  • 객체에 데이터 추가/삭제
const myFriend = {key : "value"};

// 값 출력방법
console.log(myFriend["key"]);
console.log(myFriend.key);

// 데이터 추가 
myFriend.age = 34;

// 추가한 정보 값 출력
console.log(myFriend.age);
  • 점 표기법(dot notation)이 []를 사용한 방법보다 편의상 좀 더 사용되지만, 둘이 완전히 100% 똑같은 것은 아니다!

  • 객체 탐색 1) for in 2) Object.keys() : Object의 메서드를 활용해 배열을 반환받아 배열메서드(forEach)로 순회하는 방법

객체실습1

데이터에서 숫자타입으로 구성된 요소를 뽑아 배열 만들기

//페어코딩 with Thomas
const numberKeys = [];
for (let key in widget) {
    const value = widget[key];
    if (typeof value === 'object') {
        for (let key2 in value) {
            const value2 = value[key2];
            if (typeof value2 === 'number') {
                numberKeys.push(key2);
            }
        }
    }
}
console.log(numberKeys);

//Kaka & Head 참고하여 수정
const valueArr = [];
for (let value in widget) {
    if (typeof widget[value] === 'object') {
        for (let value2 in widget[value]) {
            if (typeof widget[value][value2] === 'number') { //[][] 두 번써서 두 단계 안으로 들어갈 수 있다. 객체 in 객체?
                valueArr.push(value2);
            }
        }
    }
}
console.log(valueArr);

객체실습2

데이터에서 type이 sk인, name으로 구성된 배열만 출력

const arr = [];
let answer = 0;

function isTypeSk(obj) {
    for (let key in obj) {
        const value = obj[key];
        if (value === 'sk') {
            arr.push(obj.name);
        } else if (typeof value === 'object') {
            isTypeSk(value);
        }
    }
    return arr;
}

answer = isTypeSk(data);
console.log(answer);
  • 배열안에 데이터가 있는 걸 고려하지 않고 코딩했는데도 된다… 뭐지

코드 설계

  • 코드는 항상 설계를 먼저하고 시작할 것 !
1. 먼저 생각을 정리하자
2. 생각을 머리속으로만 정리하기 어렵다면 종이를 쓰자. (아직 멋진 설계도구는 필요 없다. 나중에도 별로 필요하지 않다)
3. 디자인이 어느정도 나오면 코드로 이를 표현해보자.
4. 설계 방법 중 하나는 상세한 구현전에 먼저 skeleton코드를 구현해보는 것이다.

학점계산기

  • 하드코딩으로 일단 완성…ㅋ (뭣이 중헌디… )

9/17 (Mon) To-Do

  1. 알고리즘 문제 풀기 (2) - 전에 푼 문제 디벨롭
  2. L2 객체 ~ STEP1 (가능하면 PR까지)