Assignment
index.js에서 meetAt 함수를 만들어주세요.
인자를 세개 받습니다.
첫번째 인자는 년도에 해당하는 숫자입니다.
두번째 인자는 월에 해당하는 숫자입니다.
세번째 인자는 일에 해당하는 숫자입니다.
년도 인자만 받았을 경우 → "1234년" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월 인자를 받았을 경우 → 년도와 월을 조합해서 "1234년 5월" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월,일 인자를 전부 받았을 경우 → 년도,월,일을 조합해서 "1234/5/6" 과 같은 형식의 문자열을 리턴 해주세요.
function meetAt(year, month, date) {
if (year && !month && !date) {
return year+'년'
}
if (year && month && date) {
return year+'/'+month+'/'+date
}
if (year && month && !date) {
return year+'년 '+month+'월'
}
}
meetAt(1990)
// 'undefined' >> falsy 거짓 같은 값.
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = {meetAt};
var 변수명 = [];
element: 배열의 값 하나하나. 요소와 요소 사이에는 쉼표로 구분. 요소 자리에는 이제까지 배운 String, Number, Array 모두 가능
배열 index: 0부터 시작
배열 접근 : 배열이름[index]
Assignment
findSmallestElement 함수를 구현해 주세요.
findSmallestElement 의 arr 인자는 숫자 값으로만 이루어진 배열입니다.
arr 의 값들 중 가장 작은 값을 리턴 해주세요.
만일 arr 가 비어있으면 0을 리턴 해주세요.
예를 들어, 다음과 같은 배열이 인자(input)으로 들어왔다면 1이 리턴 되어야 합니다.
[20, 200, 23, 1, 3, 9]
// Assignment - 다음 함수 안에 코드를 구현하세요
function findSmallestElement(arr) {
// your code here
if (arr.length === 0) {
return 0;
} else {
let min = arr[0];
for(i = 0; i < arr.length; i++){
if (arr[i] < min){
min = arr[i];
}
} return min;
}
}
console.log(findSmallestElement([5000, 300, 20, 10, 1]));
// 아래의 코드는 절대로 수정하거나 삭제하지 마세요.
module.exports = { findSmallestElement};
divideArrayInHalf 함수를 다음과 같이 구현해주세요.
divideArrayInHalf 함수는 array를 인자로 받습니다. 이 array는 숫자 값으로 만 구성되어 있으며 총 5개의 요소(element)들로 구성되어 있습니다.
divideArrayInHalf 함수는 인자로 들어온 array 로 부터 새롭게 구성된 배열 result 을 리턴합니다.
array 요소들 중 10과 같거나 작은 값의 요소들은 result의 맨 앞으로, 10보다 큰 값의 요소들은 result의 맨 뒤로 재구성된 배열을 리턴 해주세요.
재구성이 되는 순서는 array의 맨 뒤 요소부터 맨 앞 요소까지 입니다. 즉, 배열의 뒷 요소 부터 재구성을 진행해주세요.
예를 들어, 인자로 들어오는 array가 다음과 같을 때,
[1, 20, 10, 5, 100]
// Assignment - 다음 함수 안에 코드를 구현하세요.
let apple = [1, 20, 10, 5, 100];
function divideArrayInHalf(array) {
let result = [];
let length = array.length;
for(i=0; i < length; i++) {
let number = array.pop();
if ( number > 10) {
result.push(number);
} else if ( number <= 10 ) {
result.unshift(number);
}
}
return result;
}
console.log(divideArrayInHalf(apple));
기본 자료형 (Primitive) 인 여섯 가지 데이터 타입
String (문자열)
Number (숫자)
Boolean (true/false)
Undefined
Null
Symbol (ECMAScript 6 에 추가됨)
별도로 Object(객체) 도 있음
typeof 연산자
"undefined" : 정의되지 않은 변수
"boolean"
"string"
"number"
"object" : 함수를 제외한 객체 또는 "object"
"function"
typeof null → "object" : null 이라는 데이터 타입이 object 로 반환. null 은 빈 객체를 참조하고(가리키고) 있어서.
문자열
boolean타입
true로 변환 되는 값
문자열 : 비어 있지 않은 모든 문자열
숫자 : 0이 아닌 모든 숫자
객체: 모든 객체 ({ }, [ ] 포함)
false로 변환 되는 값
문자열 : " " (빈문자열)
숫자 : 0, NaN
객체 : null
undefined
조건문에서의 boolean 데이터 값 활용
let sam = 3;
if (sam === 3) { //sam === 3 이 true이면
// 실행
}
let msg = "message";
if (msg) {
// 실행
}
해당 if 문은 비교나 검사할 조건 없이 msg 만 들어가 있습니다.
자바스크립트에서 문자열은 " "(빈 문자열)을 제외하고 모두 true 값을 갖습니다.
따라서 저 위의 msg 부분은 true 가 되고, if문이 실행됩니다.
아래의 if문은 숫자 0이 false로 변환되는 예시입니다. if문이 실행되지 않습니다.
let number = 0;
if (number) {
// 실행 안됨
}
대소문자
toUpperCase()메소드 : 대문자로 변환. String형이 제공.
toLowerCase()메소드 : 소문자로 변환. Stging형이 제공.
두 메소드 전부, 기존 값 자체가 바뀌지는 않음.
let lastName = 'Yeri Kim';
let upperLastName = lastName.toUpperCase();
let lowerLastName = lastName.toLowerCase();
console.log(lastName); // Yeri Kim
console.log(upperLastName); // YERI KIM
console.log(lowerLastName); // yeri kim
length속성 : String형도, 배열 길이 구할때 처럼 사용 가능
if (phoneNumber.length !== 10 && phoneNumber.length !== 11) {
alert("폰 번호 제대로 입력하셨나요?");
}
핸드폰 번호는 0으로 시작함. Number형으로 입력하면 앞의 0이 없이 뒷 숫자만 할당됨.
Number형에는 length속성이 존재하지 않음. 따라서 따옴표를 이용해서 String형으로
저장해야 함.
let phoneNumber = 01012349876;
console.log(phoneNumber);
console.log(phoneNumber.length);
indexOf()메소드 : 문자열에 특정 문자열이 들어있는지 확인하고, 있다면 몇번 째 순서에 해당 문자열이 있는지 알려줌. 해당 문자열이 없다면 -1반환, 욕설 차단 등에 활용 가능
let info = "JavaScript는 프로래밍 언어이다.";
let firstChar = info.indexOf("프로래밍");
console.log(info, firstChar);
if (firstChar !== -1) {
info = info.slice(0, firstChar) + "프로그래밍" + info.slice(firstChar+4, info.length);
}
console.log(info);
slice()메소드 : 문자열 일부 추출, 추출된 부분을 새 문자열로 반환, 원래 문자열 변경하지 않음.
let result = text.slice(0, 1); // 첫 번째 문자만
let result = text.slice(-1); // 마지막 문자만
let result = text.slice(0); // 전체 문자열
var a = [1, 2, 3, 4, 5];
a.slice(0, 3); // [1, 2, 3]반환.
a.slice(3); // [4, 5]반환.
a.slice(1, -1); // [2, 3, 4]반환.
a.slice(-3, -2) // [3]반환.
var jobs = ['programmer', 'designer', 'planner', 'sajang'];
alert(jobs.slice(-2)); // array, ['planner', 'sajang'], 인자가 음수인 경우 시작점을 뒤에서부터 카운팅
split()메소드 : 문자열을 하위 문자열 배열로 분할, 문자열을 하위 문자열 배열로 분할, 원래 문자열을 변경하지 않음.
let text = "How are you doing today?";
const myArray = text.split(" "); // 공백 기준 새 배열 만듦.
const myArray = text.split(""); // 공백 포함 문자 분할
const myArray = text.split(" ", 3); // 제한 매개변수 사용
splice()메소드 : 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경. 원본이 수정됨 ( slice()메소드가 원본이 유지 되는 것과는 다름 )
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// inserts at index 1
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// replaces 1 element at index 4
console.log(months);
// expected output: Array ["Jan", "Feb", "March", "April", "May"]
var numbers = [1,2,3,4,5,6,7,8,9,10]; alert(numbers.splice(2)); // array, [3,4,5,6,7,8,9,10], 시작점 2부터 배열의 마지막 원소까지를 대상으로 한다.
alert(numbers); // array, [1,2], 원본이 수정된다.
var numbers = [1,2,3,4,5,6,7,8,9,10]; alert(numbers.splice(2, 4)); // array, [3,4,5,6]
var numbers = [1,2,3,4,5,6,7,8,9,10]; alert(numbers.splice(2, 4, 'three', 'four', 'five', 'six'));
// array, [3,4,5,6] alert(numbers);
// array, [1,2,three,four,five,six,7,8,9,10]
join()메소드 : 배열의 원소를 결합해서 하나의 문자열로 만듦.
array.join(separator); // sperator는 string형으로 필수.
배열의 원소를 하나의 문자열로 결합할 때 원소 사이에 위치할 문자열.
Assignment
String의 slice() 는 자주 사용 되는 문자열 메소드 중 하나 입니다. 먼저 slice 에 대한 설명을 가볍게 읽어봅시다 👉 slice설명
그 후 sliceCityFromAddress 함수를 구현해 주세요.
sliceCityFromAddress 함수는 address 를 인자로 받습니다.
address 는 주소를 나타내는 string 입니다.
주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
도시는 무조건 "시" 로 끝납니다. 예를 들어, "서울시".
"도" 와 "시" 는 주소에 한번 밖에 포함되어 있지 않습니다.
예를 들어, 다음과 같은 주소가 주어졌다면;
"경기도 성남시 분당구 중앙공원로 53"
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:
"경기도 분당구 중앙공원로 53"
// Assignment - 다음 함수 안에 코드를 구현하세요
function sliceCityFromAddress(address) {
// your code here
const words = address.split(" ")
for (let i = 0; i < words.length; i++) {
const wordLength = words[i].length
if (words[i][wordLength-1] === '시') {
words.splice(i, 1)
break;
}
}
// console.log(words.join(' '))
return words.join(' ')
}
console.log(sliceCityFromAddress("경기도 성남시 분당구 중앙공원로 53"));
module.exports = {sliceCityFromAddress}
자바스크립트는 데이터 타입 신경쓰지 않음. ( 양날의 검 )
다른 언어에서는 변수에 어떤 값을 할당해서 변수의 type이 확정되면, 다른 type의 값을 할당할 수 없음.
아래 상황에서 헷갈림
typeof연산자로 데이터 타입 확인
NaN(Not a Number)오류 발생 - 경우 숫자에만 사용되는 연산
"+"연산자 : 문자, 숫자 연산 모두 가능
"-"연산자 : 숫자 연산 가능
Number()함수 : string형에서 Number형으로 전환할 수 있음.
parseInt(string, radix)
문자열을 정수로 바꾸는 함수
string: 숫자로 변환할 문자열
radix : optional, string 문자열을 읽을 진법(수의 진법 체계의 진법), 2~36의 수. 입력하지 않으면 10진법으로 처리함.
parseFloat(string)
수로 시작할 때 그 수를 실수로 바꾸는 함수
띄어 쓰기로 여러 개의 수가 있으면 첫번째 수만 바꿈
공백으로 시작하면 공백은 무시함.
수가 아닌 문자로 시작하면 NaN을 반환함.
parseInt("1.901");
parseFloat("1.901");
Number("1.901");
parseInt("200") + 1;
-연산자 활용
var numberAsNumber = "1234";
var numberAsString = numberAsNumber - 0;
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
Number형에서 String형으로 반환
toString()함수
var numberAsNumber = 1234;
var numberAsString = numberAsNumber.toString();
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
+연산자 활용
var numberAsNumber = 1234;
var numberAsString = 1234 + "";
console.log(numberAsNumber, typeof numberAsNumber);
console.log(numberAsString, typeof numberAsString);
Assignment
nationalPensionRemainingYearCount 함수를 구현해주세요.
우리나라는 국민연금을 만 65세 부터 받을 수 있습니다.
nationalPensionRemainingYearCount 는 age_string 이라는 input을 받습니다.
age_string 은 나이 값인데 string형 값으로 되어 있습니다.
주어진 나이부터 몇년이 지나야 국민연금을 받을수 있는지 리턴 해주세요.
리턴 값은 다음과 같습니다.
"앞으로 20년 남으셨습니다"
"앞으로 20년 남으셨습니다"
예를 들어, age_string 값이 다음과 같다면:
"35"
"35"
리턴 값은 다음과 같아야 합니다.
"앞으로 30년 남으셨습니다"
function nationalPensionRemainingYearCount(age_string) {
// Your code here
let numberAge = Number(age_string);
let pension = 65 - numberAge;
return "앞으로 " + pension + "년 남으셨습니다";
}
console.log(nationalPensionRemainingYearCount("0"));