2014-04-30 4 views
1

문자열 배열로부터 프로그래밍 방식으로 자바 스크립트 함수 배열을 생성해야합니다.자바 스크립트 함수 배열 초기화

myFunctArray = [ 
    function(d) { 
     return d['a']; 
    }, 
    function(d) { 
     return d['b']; 
    }, 
    function(d) { 
     return d['c']; 
    }, 
    function(d) { 
     return d['d']; 
    } 
] 

지금 내가 노력 그래서 어떤 배열 프로그램이 작업을 수행 할 수 있어야합니다 :

myArray = ['a', 'b', 'c', 'd'] 

나는 이런 식으로 뭔가를 만들 필요 : 예를 들어

내 배열이있는 경우 이 :

for(var i = 0; i < myarray.length; i++){ 
    myFunctArray.push(function(d){    
     return d[myArray[i]]; 
    }); 
} 

내가 얻는 것은 마지막 것과 완전히 동일한 기능을 가진 배열입니다. 범위 문제가 있다고 생각하지만 솔루션을 찾을 수 없습니다. 나는 행운과 함께 다른 변형을 많이 시도하고 구글은 도움이되지 않았다. 도움을 주시면 감사하겠습니다.

답변

1

값을 "동결"하지 않고 함수 내에서 i을 사용하는 것과 관련된 범위 문제입니다. 당신이 closure

for(var i = 0; i < myarray.length; i++){ 
    function(index) { 
     myFunctArray.push(function(d){    
      return d[myArray[index]]; 
     }); 
    }(i); // call immediately inline defined function 
} 
+0

작은 오타가 그것을 해결할 수 : "즉시"없습니다 "inmediatly" – Illidanek

+0

@Illidanek을 : 고정, 감사 –

+0

그라 클라우디오을, 그 '(난 그냥 붙여 복사/그러나 나는 말하는 JS 오류가 '이 줄의 함수 (색인) {예기치 않은 ... – moncino07