데이터 구조는 track, 파이프라인 코드는 _.go를 사용
1. L.range(Infinity)
- 무한 범위의 이터러블을 생성합니다. Infinity는 무한대이므로, 끝없이 숫자를 생성합니다.
- 이때, 실제로 무한히 반복되는 것이 아니라 나머지 조건에 의해 제한됩니다.
2. L.map(i => track[i])
- L.map()을 사용하여 L.range(Infinity)에서 생성된 각 인덱스를 사용해 track 배열의 요소에 접근합니다.
- 예를 들어, track[0], track[1], track[2] 등을 차례로 접근합니다.
3. L.map(({ cars }) => cars)
- 각 track[i]에서 cars 프로퍼티만 추출합니다.
- 즉, [ '철수', '영희', '철희', '영수' ]과 같은 형태의 배열을 얻습니다.
4. L.map(_.delay(2000))
- 각 배열에 대해 2초 지연을 걸어줍니다. 이는 각 배열의 요소가 처리되기 전에 2초의 딜레이가 발생하도록 합니다.
5. L.takeWhile(({ length: l }) => l == 4)
- 각 배열의 길이가 4인 동안 요소를 가져옵니다.
- 즉, cars 배열의 길이가 4일 때까지만 가져오며, 길이가 4가 아닌 배열이 나타나면 멈춥니다.
- 따라서, 길이가 4인 배열들만 처리합니다.
6. L.flat
- 가져온 cars 배열들을 하나의 평면 배열로 펼칩니다.
- 예를 들어, [ '철수', '영희', '철희', '영수' ], [ '하든', '커리', '듀란트', '탐슨' ]과 같은 배열을 평평하게 만들어 [ '철수', '영희', '철희', '영수', '하든', '커리', '듀란트', '탐슨' ]과 같이 처리합니다.
7. L.map(car => ${car} 출발!)
- 평면 배열의 각 요소에 대해 문자열 템플릿을 사용하여 출발! 메시지를 생성합니다.
- 예를 들어, '철수'가 '철수 출발!'로 변환됩니다.
8. _.each(console.log)
- 최종적으로 모든 요소를 콘솔에 출력합니다.
- 출력 결과는 각 요소에 대해 **${이름} 출발!**의 형태로 콘솔에 표시됩니다.
주요 용어 정리
- 이터러블(iterable): 반복이 가능한 객체로, for...of와 같은 반복문에서 사용할 수 있는 형태의 데이터입니다.
- 지연(delay): 특정 시간 동안 지연시키는 기능으로, 코드에서 비동기적인 지연 처리가 필요한 경우 사용합니다.
- takeWhile: 주어진 조건이 참인 동안 데이터를 가져옵니다. 조건이 거짓이 되면 가져오기를 중단합니다.
- flat: 중첩된 배열을 평면화하여 하나의 배열로 만드는 작업입니다.
'개발일지 > JavaScript ES6' 카테고리의 다른 글
[21~22] range와 take의 재해석 / takeWile, takeUntil (0) | 2024.12.02 |
---|---|
[18~20] Map, Set / Model, Collection 클래스 / Product, Products / (0) | 2024.12.02 |
[17] 객체를 이터러블 프로그래밍으로 다루기 (values, entries, keys, object, mapObject, pick, indexBy 및 응용, 그 외) (0) | 2024.11.30 |
[15~16] map으로 합성하기, find 대신 L.filter 써보기 (0) | 2024.11.30 |
[12~14] query, queryToObject (0) | 2024.11.30 |