if (!Array.prototype.filter) { // 返回一个数组,如果提供的过滤函数返回 true,则返回存在的数组中的元素。 Array.prototype.filter = function (func, context) { var results = []; for (var i = 0; i if (i in this && func.call(context, this[i], i, this)) results.push(this[i]); } return results; }; }
if (!Array.prototype.every) { // 返回 true ,如果数组中的每个元素满足提供的测试函数。 Array.prototype.every = function (func, context) { for (var i = 0; i if (i in this && !func.call(context, this[i], i, this)) return false; } return true; }; }
if (!Array.prototype.some) { // 返回 true,如果数组中至少有一个元素满足提供的测试函数。 Array.prototype.some = function (func, context) { for (var i = 0; i if (i in this && func.call(context, this[i], i, this)) return true; } return false; }; }
if (!Array.prototype.map) { // 返回一个数组,现有数组中的每个元素调用提供的函数的返回值。 Array.prototype.map = function (func, context) { var results = []; for (var i = 0; i if (i in this) results[i] = func.call(context, this[i], i, this); } return results; }; }因为exec 方法返回数组或 null 值,并会恰当的类型转换为 true 和 false,上面的代码允许我们像这样使用:["a","b","ab","ba"].filter(/^a/),返回所有以“a”开始的值:["a","ab"]。