☑️ javascript - 다시 한 번 복습해야 할 파트

유자탱자🍋·2021년 3월 28일
0

javascript repl.it 17 - 배열 조작하기

// Answer

function divideArrayInHalf(array) {  
    let result = [];
    for(let i=4; i >= 0; i--){
      if(array[i]<=10){
        result.unshift(array[i]);
      }else{
        result.push(array[i]);
      }
    } return result; 
}

fail이였던 이유

  • for 문의 syntax에 맞지 않아서

    ; 하나까지 놓치지 말고 코드 작성하자!

  • return을 if 문 안에 주었기 때문에 함수 실행 중단

    • return 명령문은 함수 실행을 종료하고, 주어진 값을 함수 호출 지점으로 반환한다.
    • 함수 본문에서 return 명령문에 도달하면 함수의 실행은 그 지점에서 중단됩니다.



javascript repl.it 20 - 날짜와 시간

// Answer

function getWesternAge(birthday) {
  let rightNow = new Date();

  let birthYear = birthday.getFullYear();
  let thisYear = rightNow.getFullYear();
  let birthMonth = birthday.getMonth()+1;
  let thisMonth = rightNow.getMonth()+1;
  let birthDate = birthday.getDate();
  let thisDate = rightNow.getDate();
  
  if(birthMonth < thisMonth){
   return thisYear - birthYear;
  } else if((birthMonth === thisMonth) && (birthDate <= thisDate) ){
   return thisYear - birthYear;
  } else{
   return thisYear - birthYear - 1; 
  }

}

fail이였던 이유

  • 일치 연산자(===) 대신 = 를 썼다.
    • a = b와 같이 등호가 하나일 때는 할당을 의미한다.
    • 일치 연산자(strict equality operator) ===를 사용하면 형 변환 없이 값을 비교할 수 있다.
  • tip) 코드에 오류가 발생한다면 console.log를 통해 결과값 확인해보기



javascript repl.it 21 - Number

// Answer

function getRandomNumber (min, max) {
 
 return Math.random() * (max-min) + min;

}

풀이법

0 <= Math.random() < 1
0 < Math.random() (max-min) < (max-min) // 양변에 (max-min) 곱하기
min < Math.random()
(max-min) +min < max // 양변에 min 더하기



javascript repl.it 22 - Object

// Answer

function getData(salesArr,reviewArr,likeArr){

  let amount = 0;
  for(let i = 0; i < salesArr.length; i++){
    amount += salesArr[i][1];
    }
  
  let review = 0;
  for(var i = 0; i < reviewArr.length; i++){
    review += reviewArr[i][1];
    }
  
  let like = 0;
  for(var i = 0; i < likeArr.length; i++){
    like += likeArr[i][1];
    }
  
  let objData = {
    sumAmount : amount,
    sumReview : review,
    sumLike : like,
  };

  return objData;
}

풀이법

  • let amount = 0; 으로 설정

    변수 선언과 초기화를 동시에 할 수 있다.

  • 할당 연산자 활용

    amount += salesArr[i][1]; // amount = amount + salesArr[i][1]



javascript repl.it 24 - Class

// Answer

class MyMath {
 constructor(a, b){ 
   this.number1 = a;
   this.number2 = b;
   }

   getNumber(){
     return [this.number1, this.number2];
   }

   add(){
     return this.number1 + this.number2;
   }

   substract(){ 
     return this.number1 - this.number2;
   }

   multiply(){
     return this.number1 * this.number2;
   }
 }

fail이였던 이유

  • class syntax에 익숙해지자!
    constructor도 또 하나의 함수일 뿐이다.



javascript repl.it 27 - Template literals, string method

// Answer

const handleEdit = (nickname, interests) => {

 return {
   nickname : nickname,
   interests : interests.split(','),
   bio : `제 닉네임은 ${nickname}입니다. 취미는 ${interests.split(',')}입니다.`

 };
}

fail이였던 이유

  • split

    split() 메서드는 String 객체를 지정한 구분자를 이용하여 여러 개의 문자열로 나눈다.
    split syntax >> string.split( 'separator', limit )

    • separator에는 분할의 기준을, limit로 최대 분할 개수를 정한다.(선택 사항으로, 값을 정하지 않으면 전체를 다 분할한다.)
    • interests.split(', ')은 ,(쉼표)를 기준으로 분할한다.



javascript repl.it 28 - Array methods

// Answer

const moreThan100 = nums => {
  return nums.map(el => {
    if (el >= 100) return true;
    if (el < 100) return false;
    })
}


const formatDate = dates => {
  return dates.map(dates => {
    let dateArr = dates.split('-');
    
    return `${dateArr[0]}년 ${dateArr[1]}월 ${dateArr[2]}일`;
  });
}

fail이였던 이유

  • Array.map()

    map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

    const array1 = [1, 4, 9, 16];
        // pass a function to map
    const map1 = array1.map(x => x * 2); 
    console.log(map1);
       // expected output: Array [2, 8, 18, 32]
  • Array.forEach()

    forEach() 메서드는 주어진 함수를 배열 요소 각각에 대해 실행합니다.

    const array1 = ['a', 'b', 'c'];
     array1.forEach(element => console.log(element));
        // expected output: "a" 
        // expected output: "b"
        // expected output: "c"

0개의 댓글