Array.prototype.filter || (Array.prototype.filter = function(fun) { "use strict"; if (null == this) throw new TypeError; var t = Object(this), len = t.length >>> 0; if ("function" != typeof fun) throw new TypeError; for (var res = [], thisp = arguments[1], i = 0; i < len; i++) if (i in t) { var val = t[i]; fun.call(thisp, val, i, t) && res.push(val) } return res });