經常使用函數式方法實現原理

前言

你們在平常開發中會用到許多原生的js經常使用方法,以及一些函數式類庫裏面的一些js函數方法,使用過程當中能極大的提升的咱們的開發效率,簡化邏輯,提升代碼可讀性。編程

可是,不少人都沒有關注過這些函數方法的實現原理,這篇文章我會持續更新,把我經常使用的一些js函數,用函數式編程的方式實現出來。less

Functional.js

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)
  )
複製代碼

持續更新中。。。函數式編程

相關文章
相關標籤/搜索