* @ngdoc filter * @name filter * @kind function * * @description * Selects a subset of items from `array` and returns it as a new array. * * @param {Array} array The source array. * @param {string|Object|function()} expression The predicate to be used for selecting items from * `array`.
()
| 18383 | </example> |
| 18384 | */ |
| 18385 | function filterFilter() { |
| 18386 | return function(array, expression, comparator) { |
| 18387 | if (!isArrayLike(array)) { |
| 18388 | if (array == null) { |
| 18389 | return array; |
| 18390 | } else { |
| 18391 | throw minErr('filter')('notarray', 'Expected array but received: {0}', array); |
| 18392 | } |
| 18393 | } |
| 18394 | |
| 18395 | var expressionType = getTypeForFilter(expression); |
| 18396 | var predicateFn; |
| 18397 | var matchAgainstAnyProp; |
| 18398 | |
| 18399 | switch (expressionType) { |
| 18400 | case 'function': |
| 18401 | predicateFn = expression; |
| 18402 | break; |
| 18403 | case 'boolean': |
| 18404 | case 'null': |
| 18405 | case 'number': |
| 18406 | case 'string': |
| 18407 | matchAgainstAnyProp = true; |
| 18408 | //jshint -W086 |
| 18409 | case 'object': |
| 18410 | //jshint +W086 |
| 18411 | predicateFn = createPredicateFn(expression, comparator, matchAgainstAnyProp); |
| 18412 | break; |
| 18413 | default: |
| 18414 | return array; |
| 18415 | } |
| 18416 | |
| 18417 | return Array.prototype.filter.call(array, predicateFn); |
| 18418 | }; |
| 18419 | } |
| 18420 | |
| 18421 | // Helper functions for `filterFilter` |
| 18422 | function createPredicateFn(expression, comparator, matchAgainstAnyProp) { |
nothing calls this directly
no test coverage detected