자바스크립트에서 배열을 사용할 때, 때로는 특정 조건을 만족하는 요소들의 인덱스를 추출해야 하는 경우가 있습니다. 이를 수행하는 가장 일반적인 방법은 for
루프를 사용하여 배열을 반복하고 조건을 확인하는 것입니다. 하지만 ES6부터는 더 간편한 방법이 제공되고 있습니다.
Array.prototype.filter
와 Array.prototype.map
을 활용한 방법
Array.prototype.filter
메서드는 배열 요소를 필터링하여 주어진 함수의 조건을 충족하는 요소들로 이루어진 새로운 배열을 반환합니다. Array.prototype.map
메서드는 주어진 함수를 통과한 배열의 각 요소에 대해 새로운 결과를 반환하는 새로운 배열을 생성합니다. 이 두 가지 메서드를 결합하여 해당 조건을 만족하는 요소들의 인덱스를 쉽게 추출할 수 있습니다.
다음은 예제 코드입니다.
const arr = [10, 20, 30, 40, 50];
// 조건을 만족하는 요소들의 인덱스 배열을 추출
const indexes = arr.map((el, index) => el > 20 ? index : -1).filter(index => index !== -1);
console.log(indexes); // [2, 3, 4]
위 코드에서는 map
메서드를 사용하여 조건을 만족하는 경우 해당 요소의 인덱스를, 만족하지 않는 경우 -1을 반환하고, 이후 filter
메서드를 사용하여 -1이 아닌(조건을 만족하는) 인덱스를 가진 새로운 배열을 생성합니다.
위 방법을 사용하면 배열에서 특정 조건을 만족하는 요소들의 인덱스를 추출하는 작업을 보다 간결하고 가독성 있게 수행할 수 있습니다.
결론
ES6의 Array.prototype.filter
와 Array.prototype.map
메서드를 활용하여 배열에서 특정 조건을 만족하는 요소들의 인덱스를 추출하는 방법을 살펴보았습니다. 이러한 함수형 프로그래밍 스타일을 사용하면 코드를 간결하게 작성할 수 있고, 배열 조작 작업을 보다 효율적으로 수행할 수 있습니다.
참고 자료: MDN 웹 문서