4월 2일 TIL
javascript replit 13. 함수 (여러인자) assignment
index.js에서 meetAt 함수를 만들어주세요.
인자를 세개 받습니다.
첫번째 인자는 년도에 해당하는 숫자입니다.
두번째 인자는 월에 해당하는 숫자입니다.
세번째 인자는 일에 해당하는 숫자입니다.
년도 인자만 받았을 경우 → "1234년" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월 인자를 받았을 경우 → 년도와 월을 조합해서 "1234년 5월" 과 같은 형식의 문자열을 리턴 해주세요.
년도,월,일 인자를 전부 받았을 경우 → 년도,월,일을 조합해서 "1234/5/6" 과 같은 형식의 문자열을 리턴 해주세요.
meetAt(2022); // 결과 --> "2022년"
meetAt(2032, 3); // 결과 --> "2032년 3월"
meetAt(1987, 10, 28); // 결과 --> "1987/10/28"
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 되어버려서 함수가 종료되기 때문에 계속 ~년 으로 나오게 되는 것이었다.
라고 하는데 아직 이해가 잘 안된다. 일단은 넘어가야겠다.
15. Array(배열) Assignment
- 아래 조건을 읽고 이행해주세요.
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];
}
}
- 아래 조건을 읽고 이행해주세요.
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 로 써도 되는 것 같다.
for 문
다시 복습하자...
Author And Source
이 문제에 관하여(4월 2일 TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ahg4870/4월-2일-TIL저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)