你们在平常开发中会用到许多原生的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)
)
复制代码
持续更新中。。。函数式编程