Generator로 findIndexAll 구현
- 문자열에서 찾고자 하는 대상의 모든 인덱스를 반환하는 Generator입니다.
- javascript 기본 API에서 findIndex, findLastIndex가 있지만 최초 발견만 캐치한다는 한계점이 있었습니다.
- 이를 해결하기 위해서는, 별도의 변수를 배치하여 해결하는 방법이 있습니다.
- 그 변수가 완벽한 모듈에 패키징되도록 만들고 싶어서, Generator 를 사용해봤습니다.
- 코루틴이 진행되면서 실행 컨텍스트가 계속 보존되기 때문에, 원하는 로직을 달성할 수가 있었습니다.
function* findIndexAll(str: string, searchElement: string) {
let foundIndex = -1
do {
foundIndex = str.indexOf(searchElement, foundIndex + 1)
if (foundIndex !== -1) {
yield foundIndex
}
} while (foundIndex > -1)
}
[...findIndexAll('/admin/careers/codes', '/')]