JavaScript에서 여러 문자열로 배열 필터링하기
배열을 여러 문자열 조건으로 필터링하려면 for 루프와 indexOf() 메서드를 함께 사용하면 됩니다. 각 검색 키워드가 배열의 문자열 요소에 모두 포함되어 있는지 확인하고, 조건을 만족하는 요소만 새로운 배열에 담는 방식입니다.
예제 코드
var details = [
'My first Name is John and last Name is Smith',
'My first Name is John and last Name is Doe',
'Student first Name is John and last Name is Taylor'
];
var isPresent;
var records = [];
var matchWords = ['John', 'Doe'];
for (var index = 0; index < details.length; index++){
isPresent = true;
for (var outer = 0; outer < matchWords.length; outer++) {
if (details[index].indexOf(matchWords[outer]) === -1) {
isPresent = false;
break;
}
}
if (isPresent){
records.push(details[index]);
}
}
console.log(records)코드 설명
matchWords배열에는 찾고자 하는 키워드인 'John'과 'Doe'가 담겨 있습니다.- 바깥쪽 for 루프는
details배열의 각 문자열을 하나씩 순회합니다. - 안쪽 for 루프는
indexOf()를 사용해 각 키워드가 현재 문자열에 포함되어 있는지 확인합니다.indexOf()가 -1을 반환하면 해당 키워드가 존재하지 않는다는 의미이며, 이 경우 더 이상 검사할 필요가 없으므로break로 반복을 종료합니다. - 모든 키워드를 포함한 문자열만
records배열에 추가(push)됩니다.
실행 방법
위 프로그램을 실행하려면 Node.js 환경에서 다음 명령어를 입력합니다.
node fileName.js
여기서는 파일 이름이 demo151.js라고 가정합니다.
출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
PS C:\Users\Amit\JavaScript-code> node demo151.js [ 'My first Name is John and last Name is Doe' ]
'John'과 'Doe'라는 두 단어를 모두 포함하는 유일한 문자열인 두 번째 요소만 필터링되어 반환된 것을 확인할 수 있습니다. 나머지 문자열은 두 키워드 중 하나라도 포함하지 않아 결과에서 제외되었습니다.