TIL 작성 2021 9/6

Jelkov Ahn·2021년 9월 6일
0

TIL

목록 보기
10/29
post-thumbnail
  • (1) typeof ()가 있을 경우 / ()가 없을 경우
function removeNumbersLargerThan(num, obj) {
  for(let key in obj){
    if(typeof obj[key] === 'number'){
      if(obj[key]>num){
        delete obj[key];
      }
    }
  }
  // TODO: 여기에 코드를 작성합니다.
}
console.log(typeof)
typeof 123
"number"
typeof (123)
"number"

-> 소가로()가 있든 없든 메소드가 진행 된다.

  • (2) 객체 코플릿 (14번) for 구문 안쓰는 이유
  • 문제: 객체, 키, 수를 입력받아 주어진 키에 해당하는 값이 배열인 경우, 수가 가리키는 인덱스에 해당하는 요소를 리턴해야 합니다.
  • 내가 푼 답안
function getElementOfArrayProperty(obj, key, index) {
  let arrProperty = obj[key];
  for(const key in obj){
    if(Array.isArray(obj[key])===true){
      return obj[key][index];
    }else{
      return undefined;
    }
  }
// key의 값이 배열인지 확인한다
// 배열일 경우 index의 요소를 리턴한다.
  // TODO: 여기에 코드를 작성합니다.
}
  • 답안
  function getElementOfArrayProperty(obj, key, index) {
  let arrProperty = obj[key];
  if(Array.isArray(arrProperty)===true){
    return arrProperty[index];
  }else{
    return undefined;
  }
  // TODO: 여기에 코드를 작성합니다.
}
  • for 구문을 안써도 되는 이유
    -> 내가 생각한 것은 여러가지 유형의 키가 있는 객체에서 배열을 찾기 위해서 for in구문을 썼지만,
    문제를 잘읽어보면 문제에서 입력된 값이 배열인지 확인하는 것이기 때문에 for구문으로 돌릴 필요가 없다.
  • (3) 객체 코플릿 (18번) 원본을 헤치지 않는 방법 / pop을 통한 뒷 요소 제거/ slice를 통한 뒷 요소 제거
  • 문제: 객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 마지막 요소가 제거된 새로운 배열을 리턴해야 합니다.
  • 주의 사항:
    • 주어진 키에 해당하는 값이 배열이고, 빈 배열이 아닌 경우에만 마지막 요소가 제거된 배열을 리턴해야 합니다.
    • 그 외의 경우, 빈 배열을 리턴해야 합니다.
    • 입력받은 객체를 수정하지 않아야 합니다.
  • 내가 푼 답안
function getAllButLastElementOfProperty(obj, key) {
  let arr= [];
  if(Array.isArray(obj[key])===true && obj[key].length !== 0){
  //주어진 객체와 그 키의 값이 배열이고 빈 배열이 아닐경우
  arr= obj[key].slice();
  arr.pop()// 마지막 요소가 제거된 배열을 리턴한다.
  return arr;
  }else{
  return [];
  }
  // 그게 아닐경우 
  // 빈배열을 리턴합니다.
  // TODO: 여기에 코드를 작성합니다.
}
  • obj[key].slice() 를 통해서 배열을 복사 한다. 그 이유는 원본 객체를 손상하면 안되기 때문이다.

  • pop을 통해서 바로 제거하면 원본이 손상된다 그래서 slice를 사용했다.

  • 페어분이 푼 답안

function getAllButLastElementOfProperty(obj, key) {
  let arr = [];
  if(Array.isArray(obj[key])=== true && obj[key].length !==0){
    arr = obj[key].slice(0,obj[key].length-1)
    return arr;
  }else{
    return [];
  }
  // TODO: 여기에 코드를 작성합니다.
}
  • 페어분은 slice라는 함수에서 소환하는 값의 마지막을 정해줘서 (obj[key].length-1 )그 값을 제거한 후 바로 리턴을 하였다.
  • (4) Object.values(obj) / Object.keys(obj) / Math.max(...arr)

    • 코플릿 21번 문제를 풀다가 객체의 key값이나 value값을 배열로 만들어서 가장 큰 값을 구하려고 했을때 찾아본 method입니다. 물론 겨룩 문제를 풀때는 다른 방법으로 접근했지만, 알아둬야 할것 같아서 정리합니다.

    • Object.values()
      정의: 전달된 파라미터 객체가 가지는 (열거 가능한) 속성의 값들로 이루어진 배열을 리턴합니다.

    const object1 = {
    a: 'somestring',
    b: 42,
    c: false
    };
    console.log(Object.values(object1));
    // expected output: Array ["somestring", 42, false]
    • Object.keys()
      정의: 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.
    const object1 = {
    a: 'somestring',
    b: 42,
    c: false
    };
    console.log(Object.keys(object1));
    // expected output: Array ["a", "b", "c"]
    • Math.max(...arr)
      정의: Math.max()함수는 입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환합니다.
      아래는 배열에서 쓰는 경우입니다.
    const array1 = [1, 3, 2];
    console.log(Math.max(...array1));
    // expected output: 3
  • (5) for 반복문 continue vs break

    • break
      정의: break가 있는 지점에서 종료하고 블록을 벗어난다.
    let x=1;
    while(x<20){
    if(x===5){
    break;
    }
    x= x+1;
    }
    // 블록의 범위는 while 반복문이다.

    x는 20까지 하도록 반복문을 설정하였으나, x가 5가 되는 순간 반복문이 끝나게 된다.

    • continue
      정의: cotinue문 있는 곳에 아래를 실행하지 않고 블록의 처음으로 가서 반복문을 실행한다.
    let x=1;
    while(x<10){
    x= x+1;
    if(x===5){
    continue;
    }
    }

    결과값은 5가 빠진 채로 찍히게 된다.

profile
끝까지 ... 가면 된다.

0개의 댓글