Array.prototype.map2 = function(fn) {
return this.reduce((prev, curr) => {
prev.push(fn.call(this, curr))
return prev
}, [])
}
const a = [1,2,3,4].map2(item => item * 2)
console.log(a)
Array.prototype.filter2 = function(fn) {
return this.reduce((prev, curr) => {
if (fn.call(this, curr)) {
prev.push(fn.call(this, curr))
}
return prev
}, [])
}
const b = [1,2,3,4].filter2(item => {
if (item !== 1) {
return item * 9
}
})
console.log(b)
const a = [1,2,3,4].reduce((prev, curr) => {
return prev + curr
}, 0)
console.log(a)