function find (obj, props, q) {
                props = angular.copy(props);

                if (!props) {
                    return q.call(self, $parse(targetKey)(obj));
                }

                if (props.length === 0) {
                    if (isPrimitive || useIndex) {
                        //return match(obj, q);
                        return q.call(self, obj);
                    } 
                    return q.call(self, $parse(targetKey)(obj));
                }

                var curProp = props.shift();
                var value = $parse(curProp)(obj);
                if (angular.isArray(value)) {
                    for (var x = 0; x < value.length; x++) {
                        var found = find(value[x], props, q);
                        if (found) {
                            return;
                        }
                    }
                }
            }
/**
             * Recursively walks an object to reach the property expression.
             *
             * Continuing from our example in the parseKeys() method below, assume we start with the following 
             * expression:
             *
             * <code> 
             * 'd.name in pets.dogs'</br>
             * targetKey => 'name'</br>
             * targetProps => ['pets', 'dogs']</br>
             * </br>
             *
             * This method will evaluate each property in the targetProps array against the current obj (on first iteration)
             * or against the preceding expression evaluation until all have been processed. 
             * 
             * Once at the end, 
             * we evalute the targetKey against the last targetProp. So in this case, we would end up evaluation the 
             * `name` property in an object within a dogs array.
             * </code>
             *
             * @public
             * @memberof Services.Walker
             * @param {object} obj
             * Object to traverse
             * @param {props} props
             * Array of split property expressions.              
             */
Recursively walks an object to reach the property expression.
Continuing from our example in the parseKeys() method below, assume we start with the following
expression.



This method will evaluate each property in the targetProps array against the current obj (on first iteration)
or against the preceding expression evaluation until all have been processed.

Once at the end,
we evalute the targetKey against the last targetProp. So in this case, we would end up evaluation the
`name` property in an object within a dogs array.

@public
@memberof Services.Walker
@param {object} obj
Object to traverse
@param {props} props
Array of split property expressions.
Recursively walks an object to reach the property expression . Continuing from our example in the parseKeys () method below assume we start with the following expression . This method will evaluate each property in the targetProps array against the current obj ( on first iteration ) or against the preceding expression evaluation until all have been processed . Once at the end we evalute the targetKey against the last targetProp . So in this case we would end up evaluation the ` name ` property in an object within a dogs array . @public @memberof Services . Walker @param { object } obj Object to traverse @param { props } props Array of split property expressions .
function find (obj, props, q) {
                props = angular.copy(props);
                if (!props) {
                    return q.call(self, $parse(targetKey)(obj));
                }
                if (props.length === 0) {
                    if (isPrimitive || useIndex) {
                        return q.call(self, obj);
                    } 
                    return q.call(self, $parse(targetKey)(obj));
                }
                var curProp = props.shift();
                var value = $parse(curProp)(obj);
                if (angular.isArray(value)) {
                    for (var x = 0; x < value.length; x++) {
                        var found = find(value[x], props, q);
                        if (found) {
                            return;
                        }
                    }
                }
            }
function find ( obj , props , q ) { props = angular . copy ( props ) ; if ( ! props ) { return q . call ( self , $parse ( targetKey ) ( obj ) ) ; } if ( props . length === 0 ) { if ( isPrimitive || useIndex ) { return q . call ( self , obj ) ; } return q . call ( self , $parse ( targetKey ) ( obj ) ) ; } var curProp = props . shift ( ) ; var value = $parse ( curProp ) ( obj ) ; if ( angular . isArray ( value ) ) { for ( var x = 0 ; x < value . length ; x ++ ) { var found = find ( value [ x ] , props , q ) ; if ( found ) { return ; } } } }
Recursively walks an object to reach the property expression.
Recursively walks an object to reach the property expression .
//return match(obj, q);