TIL 9일차

ᄋᄋ·2021년 11월 23일
0

객체

객체의 구조

{property(= key): vaule, prop: val....}
값으로 배열, 객체가 올 수 있음.

배열과 객체

배열 - 순서를 가진다.
객체 - 의미를 가진다.
공통점: 참조형 데이터, 대량의 데이터를 다루는 데 쓰임.


객체 속성 조회법

let person = {
  name: 'james',
  age: 18,
  occupation: 'student'
}

person 객체의 name 속성값을 조회한다면,
dot notation : person.name
bracket notation : person['name']

그런데 만약 속성값이 변수라면?

function check(obj, key) {
 return obj[key];
}

check(person, age);		// 18

key는 변수이기 때문에 obj[key]로 작성해야 함.
obj.keyobj['key']는 obj에 'key'라는 속성을 조회하는 거임.


+응용+


객체 속성(property)의 추가, 변경, 삭제

let person = {
  name: 'james',
  age: 18,
  occupation: 'student'
}

추가
: person['gender'] = 'male';
*점 표기법은 person.gender = 'male';

삭제
: delete person.gender;

변경
: person.age = 20;


객체 반복문

  • for (let key in obj) { }
    : value에 직접적으로 접근 X.

+객체 특화 메소드

  • Object.keys(obj)는 속성들을 배열로 리턴
    [키, 키, 키, 키]

  • Object.valuse(obj)는 값들 배열로 리턴
    [값, 값, 값, 값]

  • Object.entries(obj)는 속성, 값 둘 다 배열로 리턴 [[키, 값], [키, 값], [키, 값]}


추가적으로 알게 된 것들

in 연산자
key in obj
: 명시된 속성이 명시된 객체에 존재하면 true를 반환.
: if(obj[key] !== undefined)와 같음.


삼항연산자 condition ? exprIfTrue : exprIfFalse

  • condition (조건문)
    : 조건문으로 들어갈 표현식
  • exprIfTrue (참일 때 실행할 식)
    : condition이 Truthy일 때 실행되는 표현식. (true일 때 치환될 값)
  • exprIfFalse (거짓일 때 실행할 식)
    : condition이 falsy일 때 실행되는 표현식. (false일 때 치환될 값)

코플릿 어려웠던 문제

Q. mostFrequentCharacter
:문자열에서 가장 반복이 많이 되는 문자를 리턴하는데, 만약 최대 반복 횟수가 같은 문자가 여러 개라면, 먼저 최대반복횟수에 도달하는 문자를 리턴하기.(공백은 포함X)

function mostFrequentCharacter(str) {
  let obj = {mostFreqCount: 0, mostFreqChar: ''};

  for (let el of str) {
    if (el === ' ') {
      continue;
    }

    if (!(el in obj)) {
      obj[el] = 0;
    }
    obj[el]++;
        
    if (obj[el] > obj.mostFreqCount) {
      obj.mostFreqCount = obj[el];
      obj.mostFreqChar = el;
    }
  }

  return obj.mostFreqChar;
}
profile
개발자A

0개의 댓글