20 lines
384 B
JavaScript
20 lines
384 B
JavaScript
|
/**
|
||
|
* Array#filter.
|
||
|
*
|
||
|
* @param {Array} arr
|
||
|
* @param {Function} fn
|
||
|
* @return {Array}
|
||
|
*/
|
||
|
|
||
|
module.exports = function (arr, fn) {
|
||
|
if (arr.filter) return arr.filter(fn);
|
||
|
var ret = [];
|
||
|
for (var i = 0; i < arr.length; i++) {
|
||
|
if (!hasOwn.call(arr, i)) continue;
|
||
|
if (fn(arr[i], i, arr)) ret.push(arr[i]);
|
||
|
}
|
||
|
return ret;
|
||
|
};
|
||
|
|
||
|
var hasOwn = Object.prototype.hasOwnProperty;
|