4.5 선형 해결법
다음처럼 중첩 루프를 쓰지 않는 hasDuplicateValue 함수를 구현해 볼 수 있다. 꽤 영리한 방법이니 어떻게 동작하는지 살펴서 첫 번째 구현보다 더 효율적인지 알아보자.
function hasDuplicateValue(array) {
let existingNumbers = [];
for(let i = 0; i < array.length; i++) {
if(existingNumbers[array[i]] === 1) {
return true;
} else {
existingNumbers[array[i]] = 1;
}
}
return false;
}
이 함수가 하는 일은 다음과 같다. existingNumbers라는 빈 배열을 생성한다.
이후 루프를 사용해 array의 각 숫자를 확인한다. 숫자가 나올 때마다 existingNumbers 배열에서 그 숫자에 해당하는 인덱스에 임의의 값(예제에서는 1)을 넣는다.