작성자 없음
작성자 정보가 삭제된 글입니다.
22.12.13 13:26 작성
·
508
0
2차원 배열일 경우에는 L.flatten 코드로 가능하지만
3차원 배열, 4차원 배열일 경우엔 어떻게 구현해야 좋을까요?
아래와 같이 구현할려고하니 deepFlatten을 해결해주는 곳이 없어서 3차원 배열 이상은 이터레이터로 리턴받고 있습니다.ㅠㅠ
const isIterable = a => a && a[Symbol.iterator];
function* deepFlatten(iter){
for(const a of iter){
if (isIterable(a)) yield deepFlatten(a)
else yield a;
}
}
L.flatten = function* (iter) {
for (const a of iter) {
if (isIterable(a)) yield deepFlatten(a)
else yield a;
}
};
var it = L.flatten([[1, [1,2,3]], 3, 4, [5, 6], [7, 8, 9]]);
log(take(Infinity, it))
[deepFlatten, 3, 4, deepFlatten, deepFlatten]