정화 코딩

[Back-end] codeit : 프로그래밍과 데이터 in JavaScript 본문

Web Development

[Back-end] codeit : 프로그래밍과 데이터 in JavaScript

jungh150c 2024. 5. 21. 16:20

객체와 프로퍼티

// 객체 (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"));

 

Comments