12월 22일 복기

Ji Taek Lim·2020년 12월 22일

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Built-in higher order functions


let arr = [1, 2, 3];
// 배열의 filter 메소드는 함수를 인자로 받는 고차 함수입니다.
// arr.filter를 실행하면 내부적으로 arr에 접근할 수 있다고 생각해도 됩니다.
arr.filter = function (arr, func) {
  const newArr = [];
  for (let i = 0; i < arr.length; i++) {
    // filter에 인자로 전달된 콜백 함수는 arr의 각 요소를 전달받아 호출됩니다.
    // 콜백 함수가 true를 리턴하는 경우에만 새로운 배열에 추가됩니다.
    if (func(arr[i]) === true) {
      newArr.push(this[i]);
    }
  }
  // 콜백 함수의 결과가 true인 요소들만 저장된 배열을 리턴합니다.
  return newArr;
};

Array.prototype.filter = function(func) {
  const arr = this;
  const newArr = []
  for(let i = 0; i < arr.length; i++) {
    if (func(arr[i]) === true) {
      newArr.push(this[i])
    }
  }
  return newArr;
}

``

14_getElementsLessThan100AtProperty

객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 100 보다 작은 요소들만 갖는 배열을 리턴해야 합니다.

객체 복습


15_select

function select(arr, obj) {
  //  배열의 각 요소들을 객체의 키로 했을 때 그 값을 추출하여 만든 새로운 객체를 리턴해야합니다.
  // key 추출하고 새로운 객체를 리턴해야합니다. arr과 obj가 있는데 obj를 리턴하고 <-arr에 값이 있으면
  // 객체의 선언 let obj = {};
  let newObj = {};
  for (let el in obj) { /// Obj의 key
    for (let index of arr){ /// let of 는 공부를 한다. 배열의 요소
      if (el === index) {  //// 객체 [] = abc
        newObj[el] = obj[el] /// el : key obj[el] = value; // 새로운 객체에 추가를 해주면 된다.
      }
    }
  }
  return newObj;
}

Algorithm Basic


01_transformFirstAndLast

배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다.




function transformFirstAndLast(arr) {
  // TODO;
  // 1. 새로운 obj를 설정해준다.
  // 2. 조건을 만들어준다. arr[0] => key
  // arr[arr.length-1] => value
  if(arr.length ===0) {
    return {};
  }
  let newObj = {};
  newObj[arr[0]] = arr[arr.length-1]; ///key : value;
  return newObj;
}
02_computeWhenDouble
연이율을 입력받아 원금이 2배 이상이 될 때까지 걸리는 시간()을 리턴해야 합니다.

TODO:   
원금이 1 이 있다.
이자는 원금 * 연이율 1* interestRate/100
원금 + 이자 가 원금의 2배인가?
맞다 시간을 리턴
아니다 1년의 이자를 더해준다.
곱해준다.

function computeWhenDouble(interestRate) {
  // 원금이 1 이 있다.
  // 이자는 원금 * 연이율 1* interestRate/100
  // 원금 + 이자 가 원금의 2배인가?
  // 맞다 시간을 리턴
  // 아니다 1년의 이자를 더해준다.

  let principal =1;
  let interest = 1+interestRate/100
  let year = 0
  while (principal <2) {
    principal = principal*interest
    year++
  }

  // for(let i =0 ; i <  )// for문은 제가 생각해보기.. 정해진 시간..

  return year

}
03_powerOfTwo
수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.

TODO:

function powerOfTwo(num) {
  ///수를 입력받았다.
  // while 로 풀어야 되는데
  // pow를 정의를 해줘야한다.?
  // num가 왔는데 2로 나누었을때 나머지가 0인지
  // 
  if (num === 1) {
    return true;
  }
  if (num %2 !==0) {
    return false;
  }
  let pow = 2
  while (pow < num) {
    pow = pow*2
  } ---> while을 통해서 반복되고 num보다 작을때까지 계속 반복
  
  return pow === num --> 리턴을 밖에다가 해주었다
}

04_firstCharacter
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자로 이루어진 문자열을 리턴해야 합니다.

function firstCharacter(str) {
  TODO: 여기에 코드를 작성합니다.
  새로운 스트링을 만든다.
  for문을 통해서 앞글자만 따온다.
  firstStr이라는 곳에 concat한다.
  return

  
  if (str.length ===0) {
    return '';
  }
  let newStr =str.split(' ');
  let firstStr=''
  for (let i=0; i <newStr.length; i++) {
    firstStr += newStr[i][0]
  }
  return firstStr;
}

arr.reverse



05_firstReverse

문자열을 입력받아 순서가 뒤집힌 문자열을 리턴해야 합니다.



TODO: newStr을 정의해주고
for 문을 돌려서 문자열의 순서를 바꿔줘
return

function firstReverse(str) {
  let newStr=''
  for(let i =str.length-1; i>=0; i=i-1) {
    newStr = newStr + str[i]
  }

  for(let i =0; i < str.length;i++) {
    newStr = newStr +str[str.length-1-i]
  } ///

  return newStr;
}

06_letterCapitalize

문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다.

function letterCapitalize(str) {
  let strArr = str.split(' ');
  let newArr=[]
  for(let i =0; i<strArr.length ; i++) {
    let head = strArr[i][0].toUpperCase();
    let tail = strArr[i].slice(1)
    newArr[i] = head + tail;
  }
  return newArr.join(' ');
}

이렇게 하니


let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World""HelloWorld"가 나왔다.

function letterCapitalize(str) {
    // TODO: 여기에 코드를 작성합니다.
      let strArr = str.split(" ");
      let newArr = [];
      for(let i = 0 ; i < strArr.length ; i++ ){
        let FirstLetter = strArr[i].charAt(0).toUpperCase();
        let leftOver = strArr[i].slice(1);
        newArr[i] = FirstLetter + leftOver;
      }
      return newArr.join(' ')
  }

charAt(0) mdn
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charAt

profile
임지택입니다.

0개의 댓글