toLowerCase() - 대문자를 소문자로 바꿔주는 메소드
toUpperCase() - 소문자를 대문자로 바꿔주는 메소드
let Name = 'JiHong Ju';
console.log(Name.toUpperCase()); // JIHONG JU
console.log(Name.toLowerCase()); // jihong ju
let name = prompt("성함을 입력해주세요");
if (name.length === 2) {
alert("외자이시군요! 이름이 이쁘네요.");
} else if (name.length === 1) {
alert("제대로 입력하셨나요?");
} else if (name.length === 3) {
alert("멋진 이름입니다.");
}
let phoneNumber = 01012349876;
console.log(phoneNumber); // 1012349876
console.log(phoneNumber.length); // undefined
Number형은 앞의 0이 없이 뒷 숫자만 할당
Number형에는 length 라는 속성이 존재하지 않는다.
그렇기 때문에, 핸드폰 번호를 온전히 표시하고 length 속성을 이용하려면 String형으로 저장해야함.
indexOf() 메소드는 문자열에 특정 문자열이 들어있는지 확인
slice() 메소드는 문자열의 일부를 추출하면서 새로운 문자열을 반환
split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눔
문제 1 : sliceCityFromAddress 함수를 구현해 주세요.
sliceCityFromAddress 함수는 address 를 인자로 받습니다.
address 는 주소를 나타내는 string 입니다.
주어진 주소가 어느 도시 인지를 찾아 해당 주소에서 도시 부분만 삭제한 새로운 주소를 리턴해 주세요.
"경기도 성남시 분당구 중앙공원로 53"
다음과 같은 값이 리턴되어야 합니다:
"경기도 분당구 중앙공원로 53"
function sliceCityFromAddress(address) {
const words = address.split(" ");
for (let i = 0; i < words.length; i++) {
const wordsLength = words[i].length;
if(words[i][wordsLength-1] === '시' ){
words.splice(i,1)
break;
}
} return words.join(' ');
}
let address1 = "서울시 강남구 논현로 661" ;
console.log(sliceCityFromAddress(address1));
문제해결 split 메소드를 이용해 주소의 단어들을 나누어준다. 배열형태로 생김.
그후 for문을 활용해 배열의 각 단어의 문자들을 시와 비교하고 시가 있다면
해당 인덱스 요소의 1개를 제거하는 방식으로 풀었다.
join
의 경우 문자들을 연결시켜주는 역할을 하는 메소드인데 ('')일 경우 문자와 문자사이에 띄어쓰기가 없이 바로 연결해주는 대신에 (' ') 이 경우 문자와 문자사이에 띄어쓰기가 생김.
Break
라는 메소드는 반복문이 만족한다면 바로 거기서 끝내게 해주는 메소드인데 효율적으로 반복문을 수행하도록 도와주는 메소드이다.
console.log('200'+'10'); // 20010/Data type : string
console.log('200'-'10'); // 190/Data type : number
console.log(200+'11'); // 20011/Data type : string
console.log('200'+11); // 20011/Data type : string
console.log('200'-'안녕'); // Nan/Data type : number
Number()를 사용해서 String형에서 Number형으로 전환 parseInt(), parseFloat() 도 있음.
toString()를 사용해서 Number에서 String으로 변환 가능.
+
와 -
를 사용해 전환이 가능.
var rightNow = new Date();
console.log(rightNow);
let year = rightNow.getFullYear(); // '년'
console.log(year);
let month = rightNow.getMonth()+1; // '달'을 얻는 메소드 +1이 핵심
console.log(month);
let date = rightNow.getDate(); // '월'
console.log(date);
let day = rightNow.getDay(); // '요일' 숫자로 표현
console.log(day);
let currentHour = rightNow.getHours(); // '현재 시'
console.log(currentHour);
let currentMin = rightNow.getMinutes(); // '현재 분'
문제 2 : 만으로 계산한 나이를 구하는 함수인 getWesternAge 함수를 구현해 봅시다.
이 함수는 birthday 라는 인자를 받습니다.
이 birthday 는 Date 객체 입니다. birthday 라는 인자를 넣었을 때, 현재를 기
준으로 만으로 계산한 나이를 리턴 해주세요.
birthday 는 string이 아닌 Date 객체.
function getWesternAge(birthday) {
let rightNow = new Date();
let a = rightNow.getMonth() + 1;
let b = birthday.getMonth() + 1;
let c = rightNow.getDate();
let d = birthday.getDate();
if (a > b){
return rightNow.getFullYear()-birthday.getFullYear() + 1;
} else if (a = b && c >= d) {
return rightNow.getFullYear()-birthday.getFullYear() + 1;
} else {
return rightNow.getFullYear()-birthday.getFullYear() -1;
}
}
문제가 풀면서 많이 헷갈렸던 문제 그이유는 조건을 설정하는 부분에서 많이 헷갈렸다. 자꾸 반대로 생각하게 되면서 조건을 계속 틀리게 적다 보니 여기서 실수가 생긴 것 같다. 따라서 if 문 안의 조건을 다시 좀 간결한 변수로 선언한후 값을 할당해 푸니 어렵지 않았다.
Math.ceil() 올림
Math.round() 반올림
Math.floor() 내림
문제 3 : 최소(min), 최대값(max)을 받아 그 사이의 랜덤수를 return 하는 함수를 구현해주세요.
function getRandomNumber (min, max) {
let number = Math.random();
let result = number * (max - min) + min;
return result;
}