TIL27 - JavaScript Replit Assignment [vol.3]

11. Function(함수) - 데이터 받기

::Assignment::

  1. 데이터를 전달 받는 isbiggerThanHundred 이라는 이름의 함수를 만들어주세요.
  2. isbiggerThanHundred 함수에서 받은 argument를 myNumber라는 parameter에 저장해주세요.
  3. isbiggerThanHundred 함수에서
    • myNumber가 100보다 크면 "크다!"라는 문자열을 return 해주세요.
    • myNumber가 100보다 작거나 같으면 "작다!"라는 문자열을 return 해주세요.

My code

function isbiggerThanHundred(myNumber) {
  if (myNumber > 100) {
    return "크다!";
  } else {
    return "작다!";
  }
}

isbiggerThanHundred(101);

Result


12. Function(함수) - parameter, argument

::Assignment::

✔️ Assignment 1 : 함수 halfNumber 를 선언하고 구현하세요.

  1. 숫자로 된 인자 하나를 받습니다.
  2. 받은 값을 2로 나눈 결과를 리턴합니다.
  3. 매개변수 이름은 마음대로 정해서 사용합니다.

✔️ Assignment 2 : 함수 halfAndAddNumber를 선언하고 구현하세요.

  1. 숫자로 된 인자 하나를 받습니다.
  2. 1번 문제에서 만들었던 halfNumber를 호출하면서, 인자로 받았던 값을 다시 halfNumber 함수에 전달해줍니다.
  3. halfNumber의 리턴결과를 함수 안쪽에서 변수명 result에 정의합니다.
  4. result에 1을 더한 값을 리턴합니다.

My code

Assignment 1

function halfNumber(value) {
  return value / 2;
}

Assignment 2

function halfAndAddNumber(value) {
  let result = halfNumber(value)
  return result + 1; 
}

Another solution

function halfNumber(num) {
  const halfNum = num/2;
  return halfNum
}

function halfAndAddNumber(num) {
  const result = halfNumber(num);
  return result + 1;
}
  • 난 바로 계산식을 리턴에 적어주어 결과값이 바로 반환되도록 했지만 다른 코드에서는 함수 안에서 따로 변수를 정의하여 계산 결과값을 할당해주고 그것을 리턴하였다.

Result


13. Function(함수) - 여러 인자

::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"

My code

  • 인자를 받지 않았다면 undefined가 출력되는구나!
  • 그렇다면 이것을 가지고 조건문을 작성해보자!
function meetAt(year, month, date) {
  if ((month === undefined) && (date === undefined)) {
    // 년도 인자만 받았을 경우
    return year + "년";
  } else if (date === undefined) {
    // 년도, 월 인자를 받았을 경우
    return year + "년 " + month + "월";
  } else {
    // 년도, 월, 일 인자를 전부 받았을 경우
    return year + "/" + month + "/" + date;
  }
}

Another solution

function meetAt(year, month, date) {
  // 연도, 월, 일 다 받았을 때
  if (date) return year + '/' + month + '/' + date;
  // 연도, 월 받았을 때
  else if (month) return year + '년 ' + month + '월';
  // 연도 인자를 받았을 때
  else if (year) return year + '년';
}
  • 나는 받지 않은 인자를 기준으로 조건문을 작성했지만 이 코드에서는 받은 인자를 기준으로 조건문을 작성하였다.
  • 조건문에서 if () return ... 형태이면 중괄호를 생략하여도 된다.
  • return 명령문을 만날 경우, 함수 실행이 종료된다!

Result


14. Function(함수) - 데이터 반환하기

::Assignment::

index.js에서 getTotal 함수를 만들어주세요.

  • getTotal 함수는 가격을 2개 받아서 calculateTotal 호출 반환값을 더해서 리턴하는 함수입니다.
  • getTotal 이라는 이름의 함수를 만들어주세요. 가격정보 2개를 인자로 받습니다.
    인자이름은 원하는대로 지어주셔도 됩니다.
  • getTotal 함수에서 인자로 받은 가격으로 각각 calculateTotal 함수를 호출해주세요. 그리고 그 결과값을 더해서 반환해주세요.

참고사항

  • getTax 함수는 가격의 tax를 구하는 함수입니다.
  • calculateTotal 함수는 상품의 가격에 tax를 더한 값을 구하는 함수입니다.
  • getTotal 함수는 두 상품의 가격을 더해서 반환하는 함수입니다.

My code

function getTax(price) {
  return price * 0.1;
}

function calculateTotal(price) {
  return price + getTax(price);
}

// Assignment
function getTotal(price1, price2) {
 let getPrice1 = calculateTotal(price1);
 let getPrice2 = calculateTotal(price2);

 return getPrice1 + getPrice2;
}

Another solution

function getTotal(price1, price2) {
  return calculateTotal(price1) + calculateTotal(price2);
}
  • 나는 price1, price2를 calculateTotal한 값을 각각 변수에다 저장하여 두 변수를 더한 값을 바로 리턴했지만 다른 코드에서는 그냥 바로 호출하면서 리턴했다.

Result


15. Array

::Assignment::

1. 아래 조건을 읽고 이행해주세요.

  • getElement 함수안에 arr 변수를 선언했습니다.
  • arr 변수는 배열을 할당했고요, 배열에는 다양한 데이터 타입의 요소가 들어있네요!
  • 배열이 담긴 arr 변수에 접근하여 getElement 함수가 "array" 라는 문자열을 return 할 수 있도록 해주세요.

2. addFirstAndLast 함수를 작성해주세요.

  • addFirstAndLast 함수에 주어진 인자 myArray는 숫자 값으로만 이루어진 array 입니다.
  • addFirstAndLast 함수에 주어진 인자 myArray 의 첫번째 element와 마지막 element의 값을 더한 값을 리턴해주세요.
  • 만일 myArray에 한 개의 요소만 있다면 해당 요소의 값을 리턴해 주시고 요소가 없는 비어있는 array라면 0을 리턴해주세요.

My code

Assignment 1

function getElement() {
  let arr = [3, [4, ["array", 9], 2+3], [0]];
  let result = arr[1][1][0];
  return result;
}

Assignment 2

function addFirstAndLast(myArray) {
  if (myArray.length == 1) {
    // 배열 안에 한 개의 요소만 존재
    return myArray[myArray.length - 1];
  } else if (myArray.length == 0) {
    // 배열 안이 비어있음
    return 0;
  } else {
    // 배열 안에 요소가 2개 이상 있음
    let add = myArray[0] + myArray[(myArray.length - 1)];
    return add;
  }
}
  • 배열 안 요소의 마지막 값의 인덱스는 항상 배열의 길이 - 1의 값이다.
  • array === []로 비교하면 안되는 이유
    • 위의 결과는 false이다.
    • 배열은 주소값을 참조하고 있기 때문에 배열 === 배열을 실행할 경우 두 배열의 주소값을 비교한다.
    • 두 배열의 주소값은 서로 다르기 때문에 false를 출력하는 것이다!

Another Solution

function addFirstAndLast(myArray) {
  if(myArray.length === 1) return myArray[0];
  if(myArray.length === 0) return 0;
  return myArray[0] + myArray[myArray.length - 1];
}
  • 함수 안에서 if() return ...의 형태라면 {}는 생략이 가능하다!
  • else도 저렇게 생략이 가능하다는 것을 알았다.
  • 전체적으로 이 코드가 깔끔한 것 같다.

Result

좋은 웹페이지 즐겨찾기