빈 개체를 사용하여 JavaScript에서 주파수 카운터 문제 해결
빈 개체 만들기
빈 개체를 만들려면 변수를 해시와 동일하게 설정합니다. 배열과 달리 객체에는 순서가 없으며 인덱스 대신 키/값 쌍을 사용합니다.
let myObject = {};
어레이에서 키 생성
array
가 주어지면 배열의 값을 객체의 키로 반복하고 할당할 수 있습니다.암호:
for (let i = 0; i < array.length; i++){ // A
let key = array[i]; // B
if (myObject[key]){ // C
myObject[key] += 1; // D
} else { // E
myObject[key] = 1; // F
}
}
유사 코드:
key
.key
가 myObject
의 키로 존재하는 경우...1
만큼 증가 key
가 myObject
에 존재하지 않음)...key
에 myObject
를 만들고 1
와 동일하게 설정합니다.조건부(삼항) 연산자를 사용하여 리팩토링된 코드:
for (let i = 0; i < array.length; i++){
let key = array[i];
if myObject[key] ? myObject[key] += 1 : myObject[key] = 1
}
개체의 값에 액세스하는 방법
객체의 키 값에 액세스하는 것은 배열의 인덱스에 액세스하는 것과 같습니다.
myObject[value];
주파수 카운터 문제 해결
배열에서 반복되지 않는 유일한 숫자를 찾기 위해 풀고 있다고 가정합니다. 답이 1개만 있다고 가정합니다.
해결하려면 다음을 수행할 수 있습니다.
function findUniqueNumber(array) {
let myObject = {}; // A
for (let i = 0; i < array.length; i++){ // B
let num = array[i];
myObject[num] ? myObject[num] +=1 : myObject[num] = 1 // C
}
for (let key in myObject){
if (myObject[key] === 1) return key; // D
}
}
findUniqueNumber( [4, 6, 5, 17, 3, 5, 17, 88, 4, 88, 3] ) // 6
객체 사용의 Big O
무차별 대입을 사용하면 두 개의 중첩 루프가 필요하기 때문에 2차 방정식의 Big O
O(n^2)
가 생성됩니다. n
입력이 증가하면 비교할 첫 번째 숫자와 다음 숫자를 가져오기 위해 2세트의 반복이 필요하고 배열의 길이 전체에서 반복됩니다.개체를 생성하여 Big O를 선형
O(n)
으로 줄일 수 있습니다. 여기에서 배열을 두 번 반복하지만 독립적인 루프에서 반복합니다( 2n
는 n
로 단순화할 수 있습니다). 따라서 일반적으로 성능은 입력 배열의 크기에만 의존합니다.
Reference
이 문제에 관하여(빈 개체를 사용하여 JavaScript에서 주파수 카운터 문제 해결), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ssdiaz/solving-a-frequency-counter-problem-in-javascript-try-an-empty-object-d58텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)