루프 대신 HashMap을 사용해야 하는 경우
루프를 사용하여 ID로 사용자 찾기
let userIdToBeSearched = 103;
const users = [
{id: 101, name: "Josh"},
{id: 102, name: "Mosh"},
{id: 103, name: "Eli"},
{id: 104, name: "Jad"},
{id: 105, name: "Susan"}
];
let user = null;
for (let i = 0; i < users.length; i++) {
if (users[i].id === userIdToBeSearched) {
user = users[i];
break;
}
}
if (user) {
console.log("User Found: ", user);
} else {
console.log("user does not exit with id: ", userIdToBeSearched);
}
위 솔루션의 시간 복잡도는 O(n)이며 여기서 n은 사용자 수를 나타냅니다. 사용자가 1,000명이라면 최악의 경우 모든 사용자를 검색하여 일치하는 항목을 찾습니다.
Considering user id will be unique for each user, this is a good indication to use a HashMap instead of a loop since all keys in the Map are Unique.
지도를 사용하여 ID로 사용자 찾기
let userIdToBeSearched = 103;
const users = new Map();
users.set(101, {id: 101, name: "Josh"});
users.set(102, {id: 102, name: "Mosh"});
users.set(103, {id: 103, name: "Eli"});
users.set(104, {id: 104, name: "Jad"});
users.set(105, {id: 105, name: "Susan"});
if(users.has(userIdToBeSearched)){
console.log("User Found: ", users.get(userIdToBeSearched));
}
else {
console.log("user does not exit with id: ", userIdToBeSearched);
}
지도를 사용할 때 사용자를 찾는 데 일정한 시간 O(1)이 걸립니다! 모두 훌륭하지만 배열에서 HashMap을 구성하려면 여전히 O(n) 시간이 필요합니다.
결론적으로 id와 같은 고유한 필드를 기반으로 자주 검색할 때 Map을 사용하십시오. 이름과 같이 고유하지 않은 필드를 기반으로 검색하는 경우 지도를 사용할 수 없습니다.
읽어 주셔서 감사합니다! HashMaps의 실제 사용 사례에 대해 논의한 파트 2를 확인하십시오.
Reference
이 문제에 관하여(루프 대신 HashMap을 사용해야 하는 경우), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kaleemniz/when-to-use-map-instead-of-loop-3cda텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)