본문 바로가기
개발일지/JavaScript ES6

[23] 자동차 경주 - 할 일들을 이터러블(리스트)로 바라보기

by 꾸주니=^= 2024. 12. 2.

데이터 구조는 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)

  • 최종적으로 모든 요소를 콘솔에 출력합니다.
  • 출력 결과는 각 요소에 대해 **${이름} 출발!**의 형태로 콘솔에 표시됩니다.

 

 

주요 용어 정리

  1. 이터러블(iterable): 반복이 가능한 객체로, for...of와 같은 반복문에서 사용할 수 있는 형태의 데이터입니다.
  2. 지연(delay): 특정 시간 동안 지연시키는 기능으로, 코드에서 비동기적인 지연 처리가 필요한 경우 사용합니다.
  3. takeWhile: 주어진 조건이 참인 동안 데이터를 가져옵니다. 조건이 거짓이 되면 가져오기를 중단합니다.
  4. flat: 중첩된 배열을 평면화하여 하나의 배열로 만드는 작업입니다.