180917 TIL Lec2 객체
Sep 17, 2018
»
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
- 알고리즘 문제 풀기 (2) - 전에 푼 문제 디벨롭
- L2 객체 ~ STEP1 (가능하면 PR까지)