Notice
Recent Posts
Link
정화 코딩
[Back-end] codeit : 프로그래밍과 데이터 in JavaScript 본문
객체와 프로퍼티
// 객체 (Object)
{
// key value
brandName: '코드잇'; // 속성 (Property)
bornYear: '2017';
}
// 자료형: object
객체에서 데이터 접근하기
// 점 표기법
objectName.propertyName
// 대괄호 표기법
objectName['propertyName']
실습 - 영어 단어장 1
let myVoca = {
function: '함수',
variable: '변수',
constant: '상수',
local: '지역의',
global: '전반적인',
};
console.log(myVoca);
console.log(myVoca.local);
console.log(myVoca.constant);
console.log(myVoca.function);
객체 다루기
let codeit = {
brandName: '코드잇',
bornYear: '2017';
}
// 객체의 속성 수정
codeit.name = 'codeit';
// 객체의 속성 추가
codeit.ceo = '강영훈';
// 객체의 속성 삭제
delete codeit.bornYear;
// 객체 안에 속성이 존재하는지 확인
'brandName' in codeit; // return boolean type
실습 - 영어 단어장 2
let myVoca = {
function: '함수',
variable: '변수',
constant: '상수',
local: '지역의',
global: '전반적인',
};
// 1. 이미 외운 단어 3개를 삭제해 주세요
delete myVoca.function;
delete myVoca.constant;
delete myVoca.local;
console.log(myVoca);
console.log(myVoca.constant);
// 2. 오늘 외울 단어 4개를 추가해 주세요
myVoca.extend = '확장하다';
myVoca.export = '내보내다';
myVoca.import = '불러오다';
myVoca['default value'] = '기본값';
console.log(myVoca);
console.log(myVoca.export);
// 3. default value의 뜻을 출력해 주세요
console.log(myVoca['default value']);
객체와 메소드
// 객체 (Object)
let greetings = {
// 메소그 (Method)
sayHello: function(name) {
console.log(`Hello ${name}!`);
},
sayHi: function() {
console.log(`Hi!`);
}
}
greetings.sayHello('Codeit');
greetings['sayHello']('Codeit');
실습 - 영어 단어장 3
let myVoca = {
addVoca: function(key, value) {
myVoca[key] = value;
},
deleteVoca: function(key) {
delete myVoca[key];
},
printVoca: function(key) {
console.log(`"${key}"의 뜻은 "${myVoca[key]}"입니다.`);
}
};
// addVoca메소드 테스트 코드
myVoca.addVoca('parameter', '매개 변수');
myVoca.addVoca('element', '요소');
myVoca.addVoca('property', '속성');
console.log(myVoca);
// deleteVoca메소드 테스트 코드
myVoca.deleteVoca('parameter');
myVoca.deleteVoca('element');
console.log(myVoca);
// printVoca메소드 테스트 코드
myVoca.printVoca('property');
for...in 반복문
for (let k in codeit) {
console.log(key);
console.log(codeit[k]);
}
실습 - 시험 결과 출력
let hyesoonScore = {
'데이터 모델링의 이해': 10,
'데이터 모델과 성능': 8,
'SQL 기본': 22,
'SQL 활용': 18,
'SQL 최적화 기본 원리': 20,
};
let minsoonScore = {
'데이터 모델링의 이해': 14,
'데이터 모델과 성능': 8,
'SQL 기본': 12,
'SQL 활용': 4,
'SQL 최적화 기본 원리': 16,
};
function passChecker(scoreObject) {
let sum = 0;
for (let subj in scoreObject) {
sum += scoreObject[subj]
}
if (sum >= 60) {
console.log('축하합니다! 합격입니다!');
} else {
console.log('아쉽지만 불합격입니다..');
}
}
passChecker(hyesoonScore);
passChecker(minsoonScore);
실습 - 우수사원 재상이
let today = new Date(2112, 7, 24);
let jaeSangStart = new Date(2109, 6, 1);
function workDayCalc(startDate) {
// 여기에 코드를 작성하세요
let timeDiff = today.getTime() - startDate.getTime();
let dayDiff = timeDiff / 1000 / 60 / 60 / 24;
console.log(`오늘은 입사한 지 ${dayDiff + 1}일째 되는 날 입니다.`);
}
workDayCalc(jaeSangStart);
실습 - 배열 인덱싱 연습
let dataType = ['number', 'string', 'boolean', 'null', 'undefined', 'object'];
for (let i = 0; i < 6; i++) {
console.log(dataType[i]);
}
실습 - 온도 바꾸기
let celsiusTemps = [27, 25, 26, 22, 28, 27, 21];
let fahrenheitTemps = [];
for (let i = 0; i < celsiusTemps.length; i++) {
fahrenheitTemps[i] = ( celsiusTemps[i] * 9 / 5 ) + 32;
}
// fahrenheitTemps 테스트
console.log(fahrenheitTemps);
실습 - splice 연습하기
let fruits = ['레몬', '토마토', '딸기', '바나나'];
let ages = [20, 24, 25, 29, 30, 33];
let numbers = [];
// fruits 배열에 '토마토'를 삭제하고 그 자리에 '사과', '청포도' 를 추가해 주세요
fruits.splice(1, 1, '사과', '청포도');
// fruits 배열의 첫 번째 요소를 삭제해 주세요
fruits.splice(0, 1);
// ages 배열에 마지막 요소를 삭제해 주세요
ages.splice(ages.length - 1, 1);
// ages 배열의 2번, 3번 인덱스를 26, 28로 변경해 주세요
ages.splice(2, 2, 26, 28);
// numbers 배열에 1, 2, 3, 5, 8, 9를 순서대로 추가해 주세요
numbers.splice(0, 0, 1, 2, 3, 5, 8, 9);
// 반복문을 활용해서 numbers 배열의 요소들 중 홀수를 모두 삭제해 주세요
let i = 0;
while (i < numbers.length) {
if (numbers[i] % 2 === 1) {
numbers.splice(i, 1);
} else {
i++;
}
}
// 테스트 코드
console.log(fruits[1]);
console.log(fruits[0]);
console.log(ages[ages.length - 1]);
console.log(ages[3]);
console.log(numbers[3]);
console.log(numbers);
배열 메소드 2
// 배열의 첫 요소 삭제
members.shift();
// 배열의 마지막 요소 삭제
members.pop();
// 배열의 첫 요소로 값 추가
members.unshift('Kim');
// 배열의 마지막 요소로 값 추가
members.push('Lee');
for...of 반복문
for (let i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
for (let element of arr) {
console.log(element);
}
실습 - 투표 집계하기
// 투표 결과 리스트
let votes = [
'이재식', '이재식', '이규하', '이규하', '이규하',
'이재식', '이재식', '이규하', '이규하', '이재식',
'이규하', '이규하', '이규하', '이규하', '이재식',
'이재식', '이규하', '이재식', '이재식', '이재식',
'이재식', '이재식', '이규하', '이규하', '이규하',
'이규하', '이규하', '이재식', '이규하', '이규하',
'이규하', '이규하', '이재식', '이규하', '이규하',
'이규하', '이재식', '이재식', '이재식', '이규하',
];
// 후보별 득표수 객체
let voteCounter = {};
// votes 배열을 이용해서 voteCounter 객체를 정리하기
for (let name of votes) {
if (name in voteCounter) {
voteCounter[name]++;
} else {
voteCounter[name] = 1;
}
}
// 후보별 득표수 출력
console.log(voteCounter);
실습 - 팀 나누기
let groups = [
['영준', '캡틴'],
['태순', '우재'],
['재훈', '지웅'],
['윤형', '동욱'],
['규식', '소원'],
];
let teams = [
[],
[],
];
for (let i = 0; i < groups.length; i++) {
teams[0].push(groups[i][0]);
teams[1].push(groups[i][1]);
}
// 테스트 코드
console.log(teams[0]);
console.log(teams[1]);
실습 - 이자 계산기
function interestCalculator(rate, payment, term) {
let interest = Math.round(payment * term * (term+1) / 2 * rate / 12);
console.log(interest);
}
// 이율이 4.3%일 때 매월 80만원씩 24개월 납입할 경우
interestCalculator(0.043, 800000, 24);
// 이율이 4.3%일 때 매월 60만원씩 24개월 납입할 경우
interestCalculator(0.043, 600000, 24);
실습 - 가사 출력하기
let lyrics = "[재석]너에게 나 하고 싶었던 말 고마워 미안해 함께 있어서 할 수 있어서 웃을 수 있어[준하] 정말 고마웠어 내 손을 놓지 않아줘서 힘을 내볼게 함께 있다면 두렵지 않아[홍철] 내가 늘 웃으니까 내가 우습나 봐 하지만 웃을 거야 날 보고 웃는 너 좋아[명수] 자꾸만 도망치고 싶은데 저 화려한 큰 무대 위에 설 수 있을까? 자신 없어..[하하] 지금까지 걸어온 이 길을 의심하지는 마 잘못 든 길이 때론 지도를 만들었잖아[형돈] 혼자 걷는 이 길이 막막하겠지만 느리게 걷는 거야 천천히 도착해도 돼[길] 술 한 잔 하자는 친구의 말도 의미 없는 인사처럼 슬프게 들릴 때 날 찾아와";
let hyungdon = null;
let startidx = lyrics.indexOf('[형돈]');
let endidx = lyrics.indexOf('[길]');
hyungdon = lyrics.slice(startidx, endidx);
// 테스트 코드
console.log(hyungdon);
실습 - 레시피 만들기
function cloneRecipe(recipe) {
let tmp = [];
for (let element of recipe) {
tmp.push(element);
}
return tmp;
}
let espresso = ['espresso'];
let americano = cloneRecipe(espresso);
americano.push('water');
let caffeLatte = cloneRecipe(espresso);
caffeLatte.push('milk');
let caffeMocha = cloneRecipe(caffeLatte);
caffeMocha.push('chocolateSyrup');
let vanillaLatte = cloneRecipe(caffeLatte);
vanillaLatte.push('vanillaSyrup');
// 테스트 코드
console.log(espresso);
console.log(americano);
console.log(caffeLatte);
console.log(caffeMocha);
console.log(vanillaLatte);
실습 - 팩토리얼
function factorial(n) {
if (n === 0) {
return 1;
}
let result = 1;
result = n * factorial(n - 1);
return result;
}
// 테스트 코드
console.log(factorial(12));
console.log(factorial(6));
console.log(factorial(3));
console.log(factorial(0));
실습 - 거스름돈 구하기
function calculateChange(payment, cost) {
let rem = payment - cost;
let money = [50000, 10000, 5000, 1000];
let cnt = [0, 0, 0, 0]
for (let i = 0; i < money.length; i++) {
if (rem >= money[i]) {
cnt[i] += Math.floor(rem / money[i]);
rem = rem % money[i];
}
}
for (let i = 0; i < money.length; i++) {
console.log(`${money[i]}원 지폐: ${cnt[i]}장`);
}
}
// 테스트 코드
calculateChange(100000, 33000);
console.log('');
calculateChange(500000, 378000);
실습 - 팰린드롬
function isPalindrome(word) {
let ans = true;
for (let i = 0; i <= Math.floor(word.length / 2); i++) {
if (word[i] !== word[word.length - i - 1]) {
ans = false;
break;
}
}
return ans;
}
// 테스트 코드
console.log(isPalindrome("racecar"));
console.log(isPalindrome("stars"));
console.log(isPalindrome("기러기"));
console.log(isPalindrome("123321"));
console.log(isPalindrome("hello"));
console.log(isPalindrome("kayak"));
'Web Development' 카테고리의 다른 글
[Node.js] Google OAuth 2.0으로 로그인/로그아웃 구현 (0) | 2024.08.02 |
---|---|
[Node.js] jwt 토큰으로 회원가입/로그인/로그아웃 구현 (0) | 2024.07.22 |
[Back-end] codeit : 프로그래밍 핵심 개념 in JavaScript (0) | 2024.05.21 |
[Back-end] codeit : 프로그래밍 시작하기 in JavaScript (0) | 2024.05.19 |
이화마켓 웹어플리케이션 개발 : 로그인/회원가입 화면 구현하기 (0) | 2023.12.04 |
Comments