_.memoize(func, [resolver])

创建一个会缓存 func 结果的函数。 如果提供了 resolver ,就用 resolver 的返回值作为 key 缓存函数的结果。 默认情况下用第一个参数作为缓存的 key。 func 在调用时 this 会绑定在缓存函数上。

注意: 缓存会暴露在缓存函数的 cache 上。 它是可以定制的,只要替换了 _.memoize.Cache 构造函数,或实现了 Map 的 delete, get, has, 和 set方法。

参数
func (Function): 需要缓存化的函数.
[resolver] (Function): 这个函数的返回值作为缓存的 key。 返回
(Function): 返回缓存化后的函数。

举例1: 获取J(1000000)的值

const J = (n) => n === 0 ? 1 : J(n-1) + 1

如果直接调用J(1000000),会导致堆栈溢出,改用lodash中_.memoize, 记忆上一次函数结果

代码:

const JJ = _.memoize((n) => n === 0 ? 1 : JJ(n - 1) + 1);
for (let i = 1; i <= 1000000; i++) {
JJ(i);
}
console.log(JJ(1000000));

举例2: 斐波那契数列F(1000)的值

const F = (n) => n < 2 ? 1 : F(n-1) + F(n-2)

同上例, 直接调用,会导致堆栈溢出,需要用_.memoize。

代码:

const FF = _.memoize((n) => n < 2 ? 1 : FF(n - 1) + FF(n - 2));
for (let i = 1; i <= 1000; i++) {
FF(i);
}
console.log(FF(1000));

lodash.memoize的更多相关文章

  1. [Javascript] lodash: memoize() to improve the profermence

    Link: https://lodash.com/docs#memoize Example: .service('UserPresenter', function(UserConstants){ va ...

  2. 「Ionic」设置开发环境

    轉載請一定註明地址:http://www.cnblogs.com/surge/p/5983024.html 謝謝! 濤叔是在mac環境下進行的,涉及android環境的配置不保證成功. 少废话,跟着濤 ...

  3. 【翻译】光速React – Vixlet

    翻译原文链接:https://blog.vixlet.com/react-at-light-speed-78cd172a6411 个人翻译小站链接:http://www.zcfy.cc/article ...

  4. 问题: 揭秘Angualr2 书上问卷调查

    npm install 初夏下面问题: 0 info it worked if it ends with ok1 verbose cli [ '/home/linux_ubuntu164/tools/ ...

  5. 光速 React

    光速 React Vixlet 团队优化性能的经验教训 在过去一年多,我们 Vixlet 的 web 团队已经着手于一个激动人心的项目:将我们的整个 web 应用迁移到 React + Redux 架 ...

  6. gitbook 入门教程之解决windows热加载失败问题

    破镜如何贴花黄 gitbook 在 Windows 系统无法热加载,总是报错! gitbook 是一款文档编写利器,可以方便地 markdown 输出成美观优雅的 html ,gitbook serv ...

  7. Lo-Dash – 替代 Underscore 的优秀 JS 工具库

    前端开发人员大都喜欢 Underscore,它的工具函数很实用,用法简单.这里给大家推荐另外一个功能更全面的 JavaScript 工具——Lo-Dash,帮助你更好的开发网站和 Web 应用程序. ...

  8. lodash用法系列(3),使用函数

    Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能. 官网:https://lodash.com/引用:<script src="//cdnjs.clou ...

  9. lodash 学习笔记

    一.介绍 官方文档: 中文 - https://www.lodashjs.com/docs/latest 英文- https://lodash.com/docs/4.17.15 1.作用 lodash ...

随机推荐

  1. Python语言基础04-函数和模块的使用

    本文收录在Python从入门到精通系列文章系列 在分享本章节的内容之前,先来研究一道数学题,请说出下面的方程有多少组正整数解. 事实上,上面的问题等同于将8个苹果分成四组每组至少一个苹果有多少种方案. ...

  2. linux下 驱动模块编译步骤

    本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,可能要花更长的时间才能学会整个过程,因为 ...

  3. canvas绘制工作流之绘制节点

    上一篇我们介绍了canvas绘制工作流的大概步骤,接下来会有系列文章细致的介绍怎么用canvas绘制工作流:这篇文章主要介绍用canvas绘制流程节点. 绘制前我们需要先准备一张节点图片,例如::好了 ...

  4. thinkphp5中取消了3.2版本中的单字母函数,初用tp5可能不大适应,下边给出两者的对应参照表,以便查阅。

    3.2版本 5.0版本 C config E exception G debug L lang T 废除 I input N 废除 D model M db A controller R action ...

  5. ArcGIS API For Javascript :如何在地图上做出点位脉冲闪烁的效果

    日常地图表达中我们通常使用的地图符号多是静态地图符号,时间久了会造成视觉审美疲劳,也没有现代感. 在这种背景下,对现有地图符号进行简单处理,即可得到色彩鲜艳,对比度强烈,活灵活现的地图表达形式. 灵感 ...

  6. oracle:表重命名

    SQL> rename test1 to test; Table renamed. SQL> alter table test rename to test1; Table altered ...

  7. 超速入门AT指令集 | 我的物联网成长记

    [摘要] 在物联网中,AT命令集可用于控制&调测设备.通信模块入网等.本文为您介绍NB-IoT常用的AT命令集及其调测工具. 什么是AT指令集 AT命令,用来控制TE(Terminal Equ ...

  8. 《master the game of GO wtth deep neural networks and tree search》研究解读

    现在”人工智能“如此火爆的一大直接原因便是deepmind做出的阿尔法狗打败李世石,从那时开始计算机科学/人工智能成为了吹逼的主流.记得当时还是在学校晚新闻的时候看到的李世石输的消息,这个新闻都是我给 ...

  9. 【2018寒假集训 Day1】【位运算】桐桐的运输方案

    桐桐的运输方案(transp) [问题描述] 桐桐有 N 件货物需要运送到目的地,它们的重量和价值分别记为: 重量:W1,W2,…,Wn: 价值:V1,V2,…,Vn: 已知某辆货车的最大载货量为 X ...

  10. 利用堆来处理Top K问题

    目录 一.什么是Top K问题 二.Top K的实际应用场景 三.Top K问题的代码实现及其效率对比 1.用堆来实现Top K 2.用快排来实现Top K 3.用堆或用快排来实现 TopK 的效率对 ...