다용성이 높은 L.flatMap
358
8 asked
안녕하세요! 정말 좋은 강의를 남겨주셔서 감사합니다!
현재 강의에서 소개해주신 L.flatMap은 제가 생각하기에 L.map을 바탕으로 돌아가기 때문에
주어진 배열에 이터러블이 아닌 값이 들어가있으면 사용할 수 없어서 다용성을 높이고자 L.map에서 여러가지 삽질들을 해보면서 다용성을 높이려고 했지만 제 결과물들은 살짝아쉽더라구요!! 혹시
const it = [[1, 2], 3, 4, [5, 6, 7]] 이러한 배열에서도 사용할 수 있는 다용성 높은 L.flatMap을 어떤식으로 구현해야할지 궁금하여 질문드립니다!!
Answer 1
0
안녕하세요, 인프런 AI 인턴이에요.
L.flatMap은 주어진 이터러블에서 각 요소에 대해 콜백 함수를 실행하고, 각 반환 값을 평탄화(flatten)하여 새로운 배열을 생성하는 메소드입니다.
여러 다양한 형태의 이터러블을 다룰 수 있는 다용성을 갖춘 L.flatMap을 구현하기 위해서는 다음과 같은 방법을 사용할 수 있습니다.
- 주어진 이터러블을 순회하면서 각 요소에 대해 검사합니다.
- 만약 요소가 배열이 아니라면, 해당 요소를 단일 요소로 갖는 배열로 변환합니다.
- 배열인 경우, 해당 요소에 대해 L.map을 사용하여 콜백 함수를 실행하고 새로운 배열을 반환합니다.
- 이렇게 반환된 배열을 단일 배열로 평탄화시킵니다.
- 최종적으로 생성된 배열을 반환합니다.
즉, 다음과 같이 구현할 수 있습니다.
function L.flatMap(iterable, mapper) {
const result = [];
for (const item of iterable) {
if (Array.isArray(item)) {
result.push(...mapper(item));
} else {
result.push(mapper([item]));
}
}
return result;
}
위의 코드에서 iterable은 주어진 배열 it이고, mapper는 각 요소에 대해 실행할 콜백 함수입니다. 이를 참고하여 코드를 적절하게 수정하시면, 다양한 형태의 이터러블에 대해 사용할 수 있는 L.flatMap을 구현하실 수 있을 것입니다.
더 자세한 내용은 인프런 강의 내용을 참고해주세요.
진행하시는 프로젝트나 코드에 맞게 필요한 부분들을 추가하시면 다용성을 높일 수 있을 거예요. 원하시는 답변이 아니거나 추가적인 질문이 있으시면 언제든지 물어보세요.
앞으로의 학습 과정에서도 좋은 성과 있으시길 바랄게요. 좋은 하루 되세요!
프론트엔드 실무에서 어떤때에 쓰이는지 궁금합니다
1
111
1
함수형 프로그래밍 심화 강의 자료 추천
0
72
2
함수형 자바스크립트 프로그래밍 책
0
54
1
filter가 아무것도 걸러내지 못하는 경우
0
114
1
take 함수의 성능적면에서의 이점
1
463
1
pipe함수
1
531
1
Identity 함수
0
450
1
함수형 프로그래밍이란
0
832
1
reduce 예제 코드 제안!
0
405
1
fxts를 배워보려고 합니다.
1
537
1
flatMap 관련 질문드립니다~
1
444
1
변수에 재 할당 금지~
0
540
1
DevTools라고 옆에 결과 확인하는거 어떻게 하나요?
0
483
2
소요시간에 관해서 질문드립니다
1
458
1
join에 대한 내용이 궁금증이 해결되지 않아서 질문드립니다!
0
465
2
reduce에 L.range를 사용할 때
0
527
2
[이해내용 공유] Lazy 에서 C.reduce가 병렬 효과를 내는 이유
3
739
2
제가 이해한 C.Reduce와 Reduce의 동작 차이 정리
2
787
3
go, pipe 함수 관련하여 질문 드립니다.
1
499
1
안녕하세요 강사님!
0
380
2
fxts에 go가 없는 이유?
0
840
1
비동기 관련 질문입니다!
0
462
1
질문 있습니다.
0
517
1
강의 중 혼란스러운 부분이 생겨 질문 드립니다.
0
546
2

