2014-07-15 6 views
0

함수 프로그래밍을 사용하여 내 자신의 병열 함수를 만드는 데 열심히 노력했습니다. 나는 허위가 대답에 포함되지 않은 어떤 이유를 제외하고는 모든 일을한다. 나는 codewars에 대한 응답으로 입력을하려고하고 있으며이를 제외한 모든 경우에 작동합니다배열의 첫 번째 레이어 만 맞추기

대신
flatten([[[1,2,3]]]) // => [[1,2,3]] 

, 내 코드가 출력된다

flatten([[[1,2,3]]]) // => [1,2,3] 

이것에 대해 실망스러운 부분은 내가 생각하는 것입니다 내 대답은 제공된 것보다이 더 합리적입니다. 그러나 어쨌든이 문제를 해결하고 싶습니다. 내가 직면하고있는 도전은 내가 너무 복잡한 것을 만들었 기 때문에 전체 구조를 혼란스럽게하지 않고 전체 리팩토링 모든 것을 필요로하지 않고 수정하는 것이 어렵다는 것이다. 위와 같은 특별한 경우를위한 함수를 만들고 싶지만 현재 구조를 방해하지 않고 어떻게해야하는지 잘 모르겠습니다. 어떻게이 방법을 구현할 수 있습니까?

이 유형의 다른 스레드는 모두 numpy로 처리됩니다. Javascript와 관련된 항목을 찾을 수 없습니다. Kthnx

섹시 코드 :

var flatten = function (parentArray) { 
return reduce(pushArray,[],parentArray); 
} 

function reduce(combine, base, array) { 
    forEach(array, function(element) { 
    base = combine(base,element); 
    }); 
    return base; 
} 

function pushArray(baseArray,tempArray) { 
    while (tempArray[0]) { 
    baseArray.push(tempArray.shift()); } 
return baseArray; 
} 
+0

* forEach *는 어디에 정의되어 있습니까? – RobG

답변

0

그냥 코멘트,하지만 난 공간이 필요 : 다음

function forEach(arr, fn) { 
    for (var i=0, iLen=arr.length; i<iLen; i++) { 
    if (arr.hasOwnProperty(i)) { 
     fn(arr[i], i, arr); 
    } 
    } 
} 

:

대해 forEach 기능을 가정하면 뭔가처럼

flatten([[[1,2,3]]]) // => [[1,2,3]] 

당신이 원하는 것 같습니다. 아니면 질문을 잘못 읽었습니까?

관련 문제