你們在平常開發中會用到許多原生的js經常使用方法,以及一些函數式類庫裏面的一些js函數方法,使用過程當中能極大的提升的咱們的開發效率,簡化邏輯,提升代碼可讀性。編程
可是,不少人都沒有關注過這些函數方法的實現原理,這篇文章我會持續更新,把我經常使用的一些js函數,用函數式編程的方式實現出來。less
const forEach = (array, fn) => {
let i
for (i=0; i<array.length; i++) {
fn(array[i])
}
}
const forEachObj = (obj, fn) => {
for (let property in obj) {
if (obj.hasOwnProperty(property)) {
fn(property, obj[property])
}
}
}
const unless = (predicate, fn) => {
if (!predicate) {
fn();
}
}
const times = (times, fn) => {
for (let i=0; i<times; i++) {
fn(i);
}
}
const every = (arr, fn) => {
let result = true
for (value of arr) {
result = result&&fn(value)
if (!result) break
}
return result
}
const some = (arr, fn) => {
let result = false
for (value of arr) {
result = result||fn(value)
if (result) break
}
return result
}
const sortBy = (property) => {
return (a, b) => {
return a[property]<b[property] ? -1 : (a[property]>b[property] ? 1 : 0)
}
}
const tap = (value) =>
(fn) => (
typeof(fn) === 'function' && fn(value),
console.log(value)
)
複製代碼
持續更新中。。。函數式編程