summaryrefslogtreecommitdiff
path: root/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js')
-rw-r--r--tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js22
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js
new file mode 100644
index 0000000000..b0116defce
--- /dev/null
+++ b/tools/eslint/node_modules/escope/node_modules/es6-map/node_modules/es5-ext/array/#/filter/shim.js
@@ -0,0 +1,22 @@
+'use strict';
+
+var isPlainArray = require('../../is-plain-array')
+ , callable = require('../../../object/valid-callable')
+
+ , isArray = Array.isArray, filter = Array.prototype.filter
+ , forEach = Array.prototype.forEach, call = Function.prototype.call;
+
+module.exports = function (callbackFn/*, thisArg*/) {
+ var result, thisArg, i;
+ if (!this || !isArray(this) || isPlainArray(this)) {
+ return filter.apply(this, arguments);
+ }
+ callable(callbackFn);
+ thisArg = arguments[1];
+ result = new this.constructor();
+ i = 0;
+ forEach.call(this, function (val, j, self) {
+ if (call.call(callbackFn, thisArg, val, j, self)) result[i++] = val;
+ });
+ return result;
+};