JavaScript의 find() 메서드와 비슷한 역할을 하는 사용자 정의 함수를 직접 만들어 보겠습니다. 예를 들어, 다음과 같이 studentId와 studentName으로 구성된 학생 데이터가 있고, 특정 학생 이름이 목록에 존재하는지 확인하고 싶다고 가정해 봅시다.
const studentDetails = [
{
studentId: 101,
studentName: "John"
},
{
studentId: 102,
studentName: "David"
},
{
studentId: 103,
studentName: "Carol"
}
]이름으로 검색하는 사용자 정의 함수 작성하기
이름을 기준으로 학생을 찾는 사용자 정의 함수를 만들어 보겠습니다. 핵심 원리는 간단합니다. for 반복문으로 배열의 요소를 하나씩 순회하면서, 입력받은 이름과 studentName 값이 일치하는지 확인하는 방식입니다. 일치 여부는 flag 변수에 저장한 후, 반복문이 끝난 뒤 그 값을 기준으로 결과 메시지를 출력합니다.
예제 코드
const studentDetails = [
{
studentId: 101,
studentName: "John"
},
{
studentId: 102,
studentName: "David"
},
{
studentId: 103,
studentName: "Carol"
}
]
function findByName(name) {
var flag = true;
for (var i = 0; i < studentDetails.length; i++) {
if (studentDetails[i].studentName == name) {
flag = true;
break;
} else {
flag = false;
}
}
if (flag == true) {
console.log("The name found=" + name);
} else {
console.log("The name not found=" + name);
}
}
findByName("David");위 코드에서 findByName() 함수는 매개변수로 전달받은 이름과 일치하는 학생이 발견되면 break 문으로 반복을 즉시 종료하여 불필요한 연산을 줄입니다. 이렇게 하면 원하는 데이터를 찾았을 때 나머지 요소를 더 이상 검사하지 않아도 되므로 효율적입니다.
프로그램 실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 사용합니다.
node fileName.js
여기서는 파일 이름이 demo106.js라고 가정하겠습니다.
실행 결과
코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
PS C:\Users\Amit\JavaScript-code> node demo106.js The name found=David
참고: 내장 find() 메서드와의 차이점
JavaScript에는 배열에서 조건에 맞는 첫 번째 요소를 반환하는 내장 find() 메서드가 이미 존재합니다. 위의 사용자 정의 함수는 해당 메서드의 동작 원리를 이해하기 위해 직접 구현한 것으로, 실무에서는 find()나 filter() 같은 내장 메서드를 활용하는 것이 더 간결하고 안전합니다. 다만, 이런 방식으로 직접 구현해 보면 반복문과 조건문의 동작 흐름을 명확히 익힐 수 있다는 장점이 있습니다.