Code States
Front-end boost camp
Today
I
Learned
🥝 상꼼한 키위가 땡기는 4월 26일, 12일차 객체 수업 시작쿠.
키와 쌍으로 이루어져 있다.
키, 값 사이는 콜론(:)으로 구분
-- 자료 : 코드스테이츠 제공
객체의 값을 사용하는 방법 :
-- 방법 1 : Dot notation (정해진 key 값이 있을 때)
let user = {
firstName: 'Steve',
lastName: 'Lee',
email: 'steve@codestates.com',
city: 'Seoul'
};
user.firstName; // 'steve'
user.city; // 'Seoul'
-- 방법 2: Bracket notation (key값이 바뀔 때 사용)
let user = {
firstName: 'steve',
lastName: 'Lee',
email: 'steve@codestates.com',
city: 'Seoul'
};
user['firstName']; // 'Steve'
user['city']; // 'Seoul'
// '', "", `` 모두 사용 가능하다.
// 사용하지 않는 건 안된다!! 변수로 취급 됨. 반드시 ! '' "" `` 문자열 사용!
let tweet = {
writer: 'stevelee',
createdAt: '2019-09-10 12:03:33',
content: '프리코스 재밌어요!'
};
tweet['content'] === tweet.content; // true
let tweet = {
writer: 'stevelee',
createdAt: '2019-09-10 12:03:33',
content: '프리코스 재밌어요!'
};
tweet['category'] = '잡담';
tweet.isPublic = true;
tweet.tags = ['#코드스테이츠', '#프리코스'];
// 삭제 : createdAt 키-값 쌍을 지웁니다.
// delete tweet.crearedAt;
// tweet = {writer: 'stevelee', content: '프리코스 재밌어요!'}
let tweet = {
writer: 'stevelee',
createdAt: '2019-09-10 12:03:33',
content: '프리코스 재밌어요!'
};
'content' in tweet; // true
'updatedAt' in tweet; // false
function getProperty(obj, property) {
return obj[property];
}
function addProperty(obj, property) {
obj[property] = true;
}
function addPropertyAndValue(obj, property, value) {
obj[property] = value;
}
function addObjectProperty(obj1, property, obj2) {
obj1[property] = obj2;
}
function removeProperty(obj, property) {
delete obj[property];
}
function removeNumberValues(obj) {
for (let prop in obj) {
if (typeof obj[prop] === 'number') {
delete obj[prop];
}
}
}
function removeArrayValues(obj) {
// for ... in 문 : 객체에서만 사용,
for (let prop in obj) {
if (Array.isArray(obj[prop]) === true) {
delete obj[prop];
}
}
}
function removeOddValues(obj) {
for (let prop in obj) {
if (obj[prop] % 2 !== 0 && typeof obj[prop] === 'number') {
delete obj[prop];
}
}
}
// 내가 쓴 답, 정답은 맞았다.
function isPersonOldEnoughToVote(person) {
for (let age in person) {
if (person[age] >= 18 && typeof person[age] === 'number') {
return true;
}
else {
return false;
}
}
}
-- 하지만 typeof 코드를 빼고, for문은 돌리지 않아도 될 듯
// 레퍼런스 정답
function isPersonOldEnoughToVote(person) {
if (person.age >= 18) {
return true;
} else {
return false;
}
}
function addFullNameProperty(obj) {
obj['fullName'] = `${obj['firstName']} ${obj['lastName']}`;
}
function removeNumbersLargerThan(num, obj) {
for (let prop in obj) {
if (obj[prop] > num && typeof obj[prop] === 'number') {
delete obj[prop];
}
}
}
function countNumberOfKeys(obj) {
return Object.keys[obj].length;
}
-- Object 클래스 알기
function printObject(obj) {
let keyvalue = '';
for (let prop in obj) {
keyvalue = keyvalue + prop + ': ' + obj[prop] + '\n';
}
return keyvalue;
}
-- 변수 prop과 obj[prop]의 차이 알기, 빈 문자열 '' 알기
function getElementOfArrayProperty(obj, key, index) {
// 주어진 키에 해당하는 값이 배열임?
// 1. 배열이고, 주어진 수가 배열의 범위를 벗어나지 않는 경우
// 2. 그 외 ==> if
if (Array.isArray(obj[key]) === false) {
return undefined;
} else if (Array.isArray(obj[key]) === true && index < obj[key].length) {
return obj[key][index];
}
}
function select(arr, obj) {
let newObj = {};
for (let key in obj) {
for (let i = 0; i < arr.length; i++) {
if (key === arr[i]) {
newObj[key] = obj[key];
}
}
}
return newObj;
}
-- if문이 여기 왜 들어가나 잠시 헷갈렸는데, 배열의 index와 객체의 키 값이 맨투맨으로 완전하게 모든 값이 매칭되는 것이 아니므로, 맞는 경우만을 찾아준다. 그래서 if문 사용./ 여기서도 마찬가지로 key 와 obj[key]의 차이를 잘 알아야함
function getLastElementOfProperty(obj, property) {
// 배열인지 아닌지 확인 -> if절
let arr = obj[property];
for (let key in obj) {
if (Array.isArray(arr) === false || arr.length === 0) {
return undefined;
} else {
return arr[arr.length - 1];
}
}
}
업데이트 중
객체 너 이자식 진짜 어렵네