2014-12-05 8 views
1

나는 콜백 함수 다음과 같은 배열 필터가 있습니다array.filter 콜백 함수의 인덱스를 가져옵니다

function createPredicateFn(expression, comparator) { 

는 어떻게 얻을 수 있습니다 :

array.filter(createPredicateFn(expression, comparator)); 

내 콜백 함수가 다음과 같이 선언을 내 createPredicateFn 안에있는 요소의 색인?

편집 :

여기 내 술어 함수이다 : 내

 function createPredicateFn(expression, comparator) { 
      var predicateFn; 

      if (comparator === true) { 
       comparator = angular.equals; 
      } else if (!angular.isFunction(comparator)) { 
       comparator = function (actual, expected) { 
        if (angular.isObject(actual) || angular.isObject(expected)) { 
         // Prevent an object to be considered equal to a string like `'[object'` 
         return false; 
        } 

        actual = angular.lowercase('' + actual); 
        expected = angular.lowercase('' + expected); 
        return actual.indexOf(expected) !== -1; 
       }; 
      } 

      predicateFn = function (item) { 
       return deepCompare(item, expression, comparator); 
      }; 

     } 
+0

이 당신의 전체 코드 –

+0

을 보여 우리는 내가 그 시도하여'createPredicateFn' – drinchev

답변

3

당신의 createPredicateFn() 당신이 다른 함수를 반환해야합니다.

  1. 소자
  2. 어레이 오브젝트 따라서 (Source: MDN)

을 트래버스

  • 요소의 인덱스 값이 내부 함수는 세 개의 매개 변수를 가질 수있다 내부 함수의 두 번째 매개 변수는 찾는 색인입니다.

    가장 단순한 예는 다음과 같이 수 :

    function createPredicateFn(expression, comparator) { 
        return function(val, index, arr) { 
        // do something and return a boolean here 
        return index % 2 == 0; 
        } 
    } 
    
  • +0

    의 코드없이 당신을 도와 그러나 인덱스를 얻을 수 없다, 나는 '수 내 함수를 작동 시키십시오 (제 편집 참조) – ncohen

    +0

    주어진 함수는 함수를 반환하지 않지만 아무 것도 반환하지 않습니다 (그러므로'undefined'). 생성자 함수를 사용하고자 할 때, 생성자는 함수 참조를 반환해야하므로'filter()'는 사용할 함수를 알고 있습니다. – Sirko

    +0

    조금 잃어 버렸습니다 ... 제 기능을 색인에 액세스하여 다시 작성해 주시겠습니까? angularjs 필터에서이 함수를 얻었는데 저는 그것에 익숙하지 않습니다. 그래서 내가하는 일을 100 % 확신하지 못합니다. – ncohen