{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.key
나 obj['key']
는 obj에 'key'라는 속성을 조회하는 거임.
+응용+
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) { }
+객체 특화 메소드
Object.keys(obj)
는 속성들을 배열로 리턴
[키, 키, 키, 키]
Object.valuse(obj)
는 값들 배열로 리턴
[값, 값, 값, 값]
Object.entries(obj)
는 속성, 값 둘 다 배열로 리턴 [[키, 값], [키, 값], [키, 값]}
in 연산자
key in obj
: 명시된 속성이 명시된 객체에 존재하면 true를 반환.
: if(obj[key] !== undefined)
와 같음.
삼항연산자 condition ? exprIfTrue : exprIfFalse
condition
(조건문)exprIfTrue
(참일 때 실행할 식)exprIfFalse
(거짓일 때 실행할 식)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;
}