1.map的实现
function map(arr, cb) {
if (!Array.isArray(arr) || !arr.length || typeof cb !== 'function') {
return [];
}
const result = [];
for (let i = 0; i < arr.length; i++) {
result.push(cb(arr[i], i, arr));
}
return result;
}
Array.prototype.map=function(cb){
return map(this,cb);
}
const result=[1,2,3,4].map((item,index)=>item>3);
console.log(result)
2.filter的实现
function filter(arr, cb) {
if (!Array.isArray(arr) || !arr.length || typeof cb !== 'function') {
return [];
}
const result = [];
for (let i = 0; i < arr.length; i++) {
cb(arr[i], i, arr)&&result.push(arr[i]);
}
return result;
}
Array.prototype.filter = function (cb) {
return filter(this, cb);
}
const result = [1, 2, 3, 4, 5].filter(item => item > 4);
console.log(result)
3.reduce的实现
function reduce(arr, initialValue, cb) {
if (!Array.isArray(arr) || !arr.length || typeof cb !== 'function') {
return [];
}
const hasInitialValue = initialValue !== undefined;
let value = hasInitialValue ? initialValue : arr[0];
for (let i = hasInitialValue ? 0 : 1; i < arr.length; i++) {
value = cb(value, arr[i], i, arr);
}
return value;
}
Array.prototype.reduce = function (cb, initialValue) {
return reduce(this, initialValue, cb)
}
const result = [1, 2, 3, 4, 5].reduce((memo, current, index) => {
memo.push(current + 1)
return memo;
}, []);
console.log(result)