TIL_20.12.15

- 오늘의 공부

  • 객체 Coplit(Pair Programming) 20/21 완료.

  • Primitive / Reference / Scope / Closure

  • Checkpoint - Primitive / Reference / Scope / Closure


- 객체 키 개수 세기 / Object.keys(obj).length ;

제가 작성한 코드 

let testObj = {a : 1, b : 2, c : 3}

function countObjKey(obj){
  let count = 0 ;  // key 개수를 세기 위해 변수 선언, 0 할당 === 0개
  
  for(let key in obj){
    // for...in 문을 사용해 객체 순회
    count ++ ;
    // 객체를 순회 할 때마다 count 1씩 증가
    console.log("key는"+key, "count는 " + count)
    // for...in이 돌아가는 것을 참고하기 위해 console.log 사용
    }
   
   return count;
}

// testObj를 전달 인자로 주어 함수 실행
countObjKey(testObj)
(출력)
key는 a, count는 1
key는 b, count는 2
key는 c, count는 3
<- 3

하지만 .... reference를 통해 쉽고 간단한 방법을 알게 됐다
return Object.keys(obj).length;
(출력)
<- 3

Object.keys() method는 object의 키를 새로운 배열에 넣어주는 method고 .length property를 사용해 길이를 return하게 되면 우리가 원하는 객체의 key가 몇 개인지 확인할 수 있게 됩니다.


- 배열 문제 풀이

  • 중요한 시험에 출제돼 6시간?!.. 동안 헤매게 만든 것과 비슷한 문제가 나와 새로 알게 된 방법을 사용해 풀어보았다. Pair 분께 보여드리면서 설명하고 싶어 주석을 달게 됐다. 아직은 설명이 미숙하지만 잘다듬어 누구나 쉽게 이해할 수 있도록 programming하는 개발자가 되고 싶다
function countLetter(str) {
  // 문제
  //  문자열을 입력받아 문자열을 구성하는 
  //  각 문자(letter)를 키로 갖는 객체를 리턴해야 합니다.
  //  각 키의 값은 해당 문자가 
  //  문자열에서 등장하는 횟수를 의미하는 number 타입의 값이어야 합니다.

  // 객체를 리턴해야하기 때문에 새로운 객체 선언, 빈 객체 할당
  let result = {};

  // 문자열을 하나씩 읽고 객체의 key로 생성
  for(let i = 0; i<str.length; i++){ // 문자의 길이만큼 순회
    // 주의해야 할 점은 'apple' 예를 들면 'p'가 두 번 있어 
    // str[1] === 'p'이고 str[2] === 'p'이기 때문에 
    // 중복을 방지해줘야 한다 
    // obj 객체에 키가 있는지 확인하는 방법은
    // (key in obj)   !!  // obj에 key가 있으면 
    // true, obj key가 없으면 false

    if(!(str[i] in result)){
    result[str[i]] = 1; 
    // 여기서 value를 1로 준 것은 key의 value가 문자열에서 등장하는 횟수이기 때문에
    // 첫 번째로 나온 문자라 value를 1로 주었습니다.

    // 여기까지 ! 
    // 우리는 for문과 if문을 통해 문자열의 첫 번째 글자에 대해 result 객체에 key와 value로 추가해줬고
    // 이제는 str[i]와 똑같은 문자가 문자열 내에 있는지 확인하기 위해 
    // for문을 한 번 더 만들어 실행합니다.
    for(let j = i+1; j<str.length; j++) {
      // j를 i + 1 로 선언해준 것은 i는 0부터 시작해 i가 아닌 i뒤 부터 중복되는 문자를 찾아야 하기 때문에 설정
      if(str[i] === str[j] ){
        result[str[i]]++
        // 똑같은 문자를 발견했을 시 str[i] key의 value 값 1씩 증가
      }
    }

    } 

  }

  return result;


}

끝!

좋은 웹페이지 즐겨찾기