index.js에서 meetAt 함수를 만들어주세요.
인자를 세개 받습니다.
첫번째 인자는 년도에 해당하는 숫자입니다.
두번째 인자는 월에 해당하는 숫자입니다.
세번째 인자는 일에 해당하는 숫자입니다.
년도 인자만 받았을 경우 → "1234년" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월 인자를 받았을 경우 → 년도와 월을 조합해서 "1234년 5월" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월,일 인자를 전부 받았을 경우 → 년도,월,일을 조합해서 "1234/5/6" 과 같은 형식의 문자열을 리턴 해주세요.
meetAt(2022); // 결과 --> "2022년"
meetAt(2032, 3); // 결과 --> "2032년 3월"
meetAt(1987, 10, 28); // 결과 --> "1987/10/28"
처음에 짠 코드
function meetAt(year, month, date) {
if (year){
return year + "년"
} else if (year, month){
return year + "년 " + month + "월";
} else {
return year + "/" + month + "/" + date;
}
}
meetAt(2022);
meetAt(2032, 3);
meetAt(1987, 10, 28);
분명 될 줄 알았지만 안되는 것이었다. 함수 값이
2022년
2032년
1987년
이렇게 나와버려 계속 생각해봤지만 답이 안나와 결국 Goo선생의 도움 좀 받았다.
문제가 있었던 건 if문의 순서였다.
function meetAt(year, month, date) {
if (year, month, date){
return year + "/" + month + "/" + date;
} else if (year, month){
return year + "년 " + month + "월";
} else {
return year + "년"
}
}
meetAt(2022);
meetAt(2032, 3);
meetAt(1987, 10, 28);
결과값
2022년
2032년 3월
1987/10/28
정 반대로 하니 바로 해결 되었다.
왜 이럴까 알아보니 이유는 return에 있었다고 한다.
리턴을 해버리면 해당 함수는 즉시 함수를 종료하고 값을 반환한다. 한개 이상의 인자, year 이외에 month 와 date 변수가 오더라도 return 되어버려서 함수가 종료되기 때문에 계속 ~년 으로 나오게 되는 것이었다.
라고 하는데 아직 이해가 잘 안된다. 일단은 넘어가야겠다.
- 아래 조건을 읽고 이행해주세요.
getElement 함수안에 arr 변수를 선언했습니다.
arr 변수는 배열을 할당했고요, 배열에는 다양한 데이터 타입의 요소가 들어있네요!
배열이 담긴 arr 변수에 접근하여 getElement 함수가 "array" 라는 문자열을 return 할 수 있도록 해주세요.
- addFirstAndLast 함수를 작성해주세요.
addFirstAndLast 함수에 주어진 인자 myArray는 숫자 값으로만 이루어진 array 입니다.
addFirstAndLast 함수에 주어진 인자 myArray 의 첫번째 element와 마지막 element의 값을 더한 값을 리턴해주세요.
만일 myArray에 한 개의 요소만 있다면 해당 요소의 값을 리턴해 주시고 요소가 없는 비어있는 array라면 0을 리턴해주세요.
Hint) array의 길이를 구하는 방법은 다음을 참조하세요 : https://community.wecode.co.kr/t/js-array/200/2
function addFirstAndLast(myArray) {
if(myArray.length == 1){
return myArray[0]
}else if(myArray == 0){
return 0;
}else{
return myArray[0] + myArray[myArray.length -1];
}
}
myArray.length -1을 찾는데 애를 먹었다.
마지막 요소를 선택할 때 쓰이고 -2 는 마지막에서 두번째 요소를 선택하는 식.
꼭 알아두자.
그리고
else if(myArray == 0){
return 0;
비교연산자를 쓸 때 주의 해야 한다.
동등연산자 ==가 아닌 일치연산자 ===로 쓰면 결과값이 안나온다.왜냐하면 ===는 값과 타입을 모두 같아야 쓰는 연산자이기 때문이다. 여기서는 ==를 써서 타입이 달라도 일치하게 써야되는 것 같다. 배열안에 있는 숫자는 number가 아닌 object라서 그런걸까?
그냥 myArray.length < 1 로 써도 되는 것 같다.
다시 복습하자...