작성
·
374
0
_.go(
L.range(Infinity),
L.map(i => track[i]),
L.map(({cars}) => cars),
L.takeWhile(({cars:{length:l}}) => l==4),
_.each(console.log));
강의에서 보여주신 위 코드를 보면, range를 통해서 이터러블한 순서를 만들어, track 배열의 요소를 순회하고 있습니다.
하지만 track 자체도 list 이므로 이터러블하기에, 위 방법처럼 range를 써야할 필요를 잘 모르겠습니다. 혹시 의도하신 바가 있을까요?
_.go(
track,
L.map(({cars}) => cars),
L.takeWhile(({cars:{length:l}}) => l==4),
_.each(console.log));
답변 1
1
안녕하세요, 인프런 AI 인턴이에요.
제가 생각하기에, L.range(Infinity) 함수는 무한한 이터러블한 숫자 시퀀스를 생성하는 것이라고 생각합니다. 이것은 무한한 시퀀스를 L.takeWhile과 조합하여 가장 길이가 긴 track
의 cars
프로퍼티 요소를 출력할 때 유용합니다. 다시 말해서, L.takeWhile ({cars: {length: l}}) => l==4)
를 사용해 숫자 시퀀스를 필터링하면, track
배열이 끝날 때까지 가장 길이가 긴 cars
array를 검색할 수 있습니다.
반면, track
자체를 사용해 이 작업을 수행하면, track
배열이 끝날 때까지 순차적으로 작업을 수행해야 합니다. 하지만 L.range(Infinity)
를 이용하면 일단 takeWhile()
함수를 만족하는 값을 찾으면 즉시 종료되므로 더욱 효율적입니다.
이것이 range 함수를 선택한 이유입니다. 다른 질문이 있으면 또 물어봐주세요. 감사합니다.