12345678910111213141516171819202122232425 |
- /**
- * Array#filter.
- *
- * @param {Array} arr
- * @param {Function} fn
- * @param {Object=} self
- * @return {Array}
- * @throw TypeError
- */
- module.exports = function (arr, fn, self) {
- if (arr.filter) return arr.filter(fn, self);
- if (void 0 === arr || null === arr) throw new TypeError;
- if ('function' != typeof fn) throw new TypeError;
- var ret = [];
- for (var i = 0; i < arr.length; i++) {
- if (!hasOwn.call(arr, i)) continue;
- var val = arr[i];
- if (fn.call(self, val, i, arr)) ret.push(val);
- }
- return ret;
- };
- var hasOwn = Object.prototype.hasOwnProperty;
|