2023-04-26(수)
코드스테이츠 부트캠프 12일차
Section 1 Unit8 - [JavaScript] 배열, 객체
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter 2. 객체
입력하는 정보는 사용자마다 다르고 각기 다른 값을 가질 수 있지만, 입력해야 하는 데이터의 종류가
동일한 경우 객체를 사용하면 손쉽게 데이터를 관리할 구 있습니다.
이렇게 공통적인 속성을 가지는 경우 객체를 사용해야 합니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter 2-1. 객체 기초
객체 (Object)
-> 회원 주소록을 만들어본다고 가정해봅시다.
매번 이런 식으로 여러 개의 변수를 꼭 선언해줘야 할까요?
각 변수는 이름으로 구분할 수 있을 뿐, 서로 어떠한 관계도 없습니다.
-> 배열을 써보면 어떻게 될까요
let user = [
'Steve', 'Lee', 'steve@codestates.com', 'Seoul', ];
= 각 값이 하나의 변수로 묶여있긴 하지만, 이 경우에는 각 index가 어떤 정보를 갖고 있는지 미리 알고 있어어 합니다.
= indx로 접근할 경우 가독성도 떨어집니다. ex) user[1] // Lee
-> 이럴때 사용하는게 객체입니다. 이러한 주소록에 적합한 자료 구조입니다.
-> 객체의 선언은 다음과 같습니다.
let user = {
firstName : 'Steve',
lastName : 'Lee',
email : 'steve@cdoestates.com',
city : 'Seoul'
};
fistName , lastName 같은 것들은 key 라고 부르고 'Steve', 'Lee' 같은 것들을 값 value라고 부릅니다.
키와 값 사이는 콜론 ( : ) 으로 구분합니다.
키와 값은 쉼표로 구분해줍니다.
중괄호를 이용해서 객체를 만듭니다.
-> 객체의 값을 사용하는 방법은 두 가지가 있습니다.
let user = {
firstName : 'Steve',
lastName : 'Lee',
email : 'steve@cdoestates.com',
city : 'Seoul'
};
user.fristName; // 'Steve'
user.city; // 'Seoul'
= Dot notation
이런식으로 값을 가져올 수 있습니다.
user['firstName']; // 'Steve'
user['city']; // Seoul
=Bracket notation
연습문제
let tweet = {
writer : 'stevelee',
createdAt : '2019-09-10 12:03:33',
content : '프리코스 재밌어요!'
};
stevelee라는 아이디를 가진 유저가 SNS에 새로운 글을 올렸습니다.
그가 작성한 글 "프리코스 재밌어요!" 라는 내용을
bracket notation으로 어떻게 가져올까요?
답 = tweet[ 'content' ];
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Chapter 2-2 객체 다루기
사용법
tweet['content'] === tweet.content 는 같지만
tweet[content] 와 tweet.content 는 다르다
차이점
Bracket notation 과 Dot notation 의 차이점
Bracket notation 은 키값이 변할때나 동적일때 써야한다.
공통점
Bracket notation 과 Dot notation 둘다 키를 추가할 수 있다.
키값의 밸류로는 어떠한 값의 클래스가 오던 괜찮다.
DELETE
delete 키워드를 이용해 삭제가 가능합니다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
코플릿 헷갈렸던 문제
10번문제 / 12번문제 / 15번문제 / 17번문제 / 21번문제
복습
10번문제
객체를 입력받아 'firstName', 'lastName' 속성값 사이에 띄어쓰기 하나를 둔 단일 문자열을
fullName 속성값으로 할당해야 합니다.
-입출력 예시 -
const person = {
firstName: 'Jade',
lastName: 'Smith',
};
addFullNameProperty(person);
console.log(person.fullName); // --> 'Jade Smith'
으로 입력하면 되는데 여기서 두 객체를 합칠때는 이문제에서 fullname 이라는 변수를 객체안에 생성하고 그안에
두 값을 합친 문자열을 넣는 방식인데 두 값을 합칠때는 + 를 사용하여 두 값을 합치고 문자열 ( ' ' )을 사용하여
두 값들이 합쳐지는 값 사이에 띄어쓰기를 사용하여 값을 나타낼 수 있게 된다.
12번문제
객체를 입력받아 속성의 개수를 리턴해야 합니다.
-입출력 예시 -
const obj = {
a: 1,
b: 2,
c: 3,
};
let output = countNumberOfKeys(obj);
console.log(output); // --> 3
15번문제
배열과 객체를 입력받아 배열의 각 요소들을 객체의 키로 했을 때 그 값을 추출하여 만든 새로운 객체를 리턴해야 합니다.
-입출력 예시-
const arr = ['a', 'c', 'e'];
const obj = { a: 1, b: 2, c: 3, d: 4 };
let output = select(arr, obj);
console.log(output); // --> { a: 1, c: 3 }
17번문제
배열과 수를 입력받아 수가 가리키는 인덱스에 해당하는 객체의 'name' 속성값을 리턴해야 합니다.
-입출력 예시-
let output = getValueOfNthElement([{ name: 'Kelly' }, { name: 'Anna' }], 1);
console.log(output); // --> 'Anna'
output = getValueOfNthElement([{ name: 'Kelly' }, { name: 'Anna' }], 2);
console.log(output); // --> 'Anna'
output = getValueOfNthElement(
[{ name: 'Jim' }, { name: 'Tim' }, { name: 'Pooh' }],
1
);
console.log(output); // --> 'Tim'
output = getValueOfNthElement([], 0);
console.log(output); // --> 'no name'
21번문제
문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.
-입출력 예시-
let output = mostFrequentCharacter('apples not oranges');
console.log(output); // --> 'p'
output = mostFrequentCharacter('hello world');
console.log(output); // --> 'l'
output = mostFrequentCharacter(' ');
console.log(output); // --> ''
output = mostFrequentCharacter('');
console.log(output); // --> ''
output = mostFrequentCharacter('abba');
console.log(output); // --> 'b'
리턴해주면 된다.
'Section1' 카테고리의 다른 글
코드스테이츠 프론트엔드 부트캠프 14일차 (0) | 2023.04.28 |
---|---|
코드스테이츠 프론트엔드 부트캠프 13일차 (0) | 2023.04.27 |
코드스테이츠 프론트엔드 부트캠프 11일차 (0) | 2023.04.25 |
코드스테이츠 프론트엔드 부트캠프 10일차 (0) | 2023.04.24 |
코드스테이츠 프론트엔드 부트캠프 8일차 (0) | 2023.04.20 |