오늘 코플릿 객체 문제 풀 때 유용하게 쓰인 Frequency Counter.
문자열이나 배열에서 각각의 글자/요소의 빈도수를 셀 때 사용된다.
str = 'abracadabra';
let freqCounter = {};
for (let char of str) {
if (freqCounter[char]) {
freqCounter[char] += 1;
} else {
freqCounter[char] = 1;
}
}
freqCounter; // {a: 5, b: 2, r: 2, c: 1, d: 1}
arr
에 대해 typeof arr
를 실행하면 "object"
가 반환된다. typeof
로는 배열을 다른 객체와 구분할 수 없기 때문에 Array.isArray()
메서드를 사용해 주어야 한다.for...of
를 사용할 수 있다.Symbol.iterator
속성을 가지고 있는지 확인for...in
은 객체 안을 속성들을 모두 조회하지만 그 순서는 항상 입력 순서와 같지는 않다.let obj = {
a: 1,
b: 2,
c: 3
}
delete obj.a; // true
obj; // {b: 2, c: 3}
delete
연산자를 이용하여 객체의 특정 속성을 제거할 수 있다.true
, 아닐 경우 false
가 반환된다. 만약 존재하지 않는 속성을 제거하려 하면 아무 것도 일어나지 않고 true
가 반환된다.delete
자체가 바로 해당 속성이 저장된 메모리를 비우지는 않고 다만 더 이상 그 속성을 조회할 수 없도록 reference를 끊는다. 해당 메모리는 후에 garbage collector에 의해 회수된다.let obj = {
a: 1,
b: 2,
c: undefined;
}
'a' in obj; // true
'A' in obj; // false
'c' in obj; // true
in
연산자는 연산자 앞에 명시된 속성이 연산자 뒤에 명시된 객체에 존재하면 true
아니면 false
를 반환한다.undefined
/null
이어도 true
를 반환한다.