[javascript] 자바스크립트 배열에서 특정 조건을 만족하는 요소들의 인덱스 추출하기

자바스크립트에서 배열을 사용할 때, 때로는 특정 조건을 만족하는 요소들의 인덱스를 추출해야 하는 경우가 있습니다. 이를 수행하는 가장 일반적인 방법은 for 루프를 사용하여 배열을 반복하고 조건을 확인하는 것입니다. 하지만 ES6부터는 더 간편한 방법이 제공되고 있습니다.

Array.prototype.filterArray.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.filterArray.prototype.map 메서드를 활용하여 배열에서 특정 조건을 만족하는 요소들의 인덱스를 추출하는 방법을 살펴보았습니다. 이러한 함수형 프로그래밍 스타일을 사용하면 코드를 간결하게 작성할 수 있고, 배열 조작 작업을 보다 효율적으로 수행할 수 있습니다.

참고 자료: MDN 웹 문서