// 自定义 filter 方法 Array.prototype.myfilter = function (cb) { const context = this; const len = context.length; const res = []; for (let i = 0; i < len; i++) { if (cb.call(context, context[i], i, context)) { res.push(context[i]); } } return res; } console.log('自定义filter:', [1,4,67,49,2,5,3,74].myfilter(item => item > 10)); // 自定义 map 方法 Array.prototype.mymap = function (cb) { const context = this; const len = context.length; const res = []; for (let i = 0; i < len; i++) { res.push(cb.call(context, context[i], i, context)) } return res; } console.log('自定义map: ', [1, 2, 3, 4, 5].mymap(item => item * 2)); // 自定义 every 方法 Array.prototype.myevery = function (cb) { const context = this; const len = context.length; const flag = true; for (let i = 0; i < len; i++) { if (!cb.call(context, context[i], i, context)) { return false; } } return flag; } console.log('自定义every:', [1, 2, 3, 4, 5].myevery(item => item > 1)); // 自定义 some 方法 Array.prototype.mysome = function (cb) { const context = this; const len = context.length; const flag = false; for (let i = 0; i < len; i++) { if (cb.call(context, context[i], i, context)) { return true; } } return flag; } console.log('自定义some:', [1, 2, 3, 4, 5].mysome(item => item > 5));