Collections
_.first 可以挑选出数组中第一个元素,比[0]更可读
_.reduce可以将整个数组合并成一个数字,第三个参数是初始值,如果没有就采用数组的第一个数字作为初始值
var sum = _.reduce([1, 2, 3], function(memo, num){ return memo + num; }, 0);
=> 6
_.reduceRight 是 _.reduce的从右向左版本
查找
  • _.find只能找一个元素
  • _.filter可以过滤多个
  • _.where就像是key-value版本的_.filter,使用频率很高
  • _.findwhere 是key-value版本的_.find
  • _.reject 是_.filter的反向实现
存在
  • _.every 是否每一个都通过
  • _.some 是否个别通过
  • _.contains 是否存在
_.invoke 顺序调用list中的所有对象的方法
_.invoke(list, methodName, *arguments)
_.plunk 是key-value版本的_.map,只需要制定属性名便可以抽出一个单独包含该属性值的数组
排序
  • _.max, _.min可以传入函数,来对对象数组进行比较
  • _.sortBy
  • _.groupBy 根据function计算的结果分组
  • _.indexBy key-value版本的_.groupBy,按照属性来分组
  • _.countBy 只计算数量的_.groupBy
  • _shuffle 随机打算数组
  • _.sample 抽样,可以传入要抽样的数量
  • _.partition 跟 groupBy类似,但是不会留下组名
_.toArray将任何东西转化为数组,如果是对象就把值转化为数组
_.size() 不止可以计算数组的长度,还可以返回对象的属性数量
Array
_.first 第一个    <--->  _.last最后一个
_initial 去除最后n个, 如果不传n就是去除最后一个 <---> rest 去除前n个,不传n就是去除第一个
_.compact 数组中的false, null, 0, "" 会被去除
_.flatten 把数据变成扁平化 但是只对数组有效,对对象无效
_.without 从数组中去除某几个数
_.intersection  交叉,挑选几个数组中的交集
_.object 把二维数组变对象
_.indexOf 可以查找某个字符串或者数字在数组中的位置
_.sortedIndex 如果把这个值放到数组中会在哪个位置  如果是对象需要指定按照哪个属性来排序
_.sortedIndex([10, 20, 30, 40, 50], 35);
=> 3
Function
_.bind 将方法绑定到对象上
_.bindAll 绑多个方法到对象上
_.partial 与设定方法的前几个参数,并生成新的方法
var subtract = function(a, b) { return b - a; };
sub5 = _.partial(subtract, 5);
sub5(20);

=> 15
如果想跳过某几个参数,就用_当占位符
_.memoize 可以把计算的结果缓存起来,如果有传入第二个参数作为hash值计算的方法,那么会按该方法计算的结果作为key来存储计算的结果。可以加速js的计算
_.delay 就是underscore版本的setTimeout
_.defer 就是相当于0毫秒的setTimeout,不要跟jquery的ajax的defer混淆了
_.throttle 为函数调用设定一个时间阀值,当初次调用后的一段时间内,再次调用不会发生效果。
_.debounce 是即时版本的_.delay,当用debounce定义了函数和延迟后,每次调用该函数,都会在指定延时后才执行
_.once 生成之调用一次的函数,使用场景 初始化函数
_.after 生成之后在制定次数的调用之后再调用,前n-1次调用会被直接跳过,使用场景 多个异步请求返回结果后的处理
_.before 生成之后的函数只能调用n次
_.wrap 把第一个参数定义的函数当做参数传给第二个函数,使用场景 做方法的拦截器, 可以在某个方法执行前或者执行后进行指定操作
_.negate 对方法取反,本来返回true的现在变成返回false,其实就相当于在返回值前加 !
_.compose 串联多个方法,前一个方法的返回值作为下一个方法的输入参数
Object
_.keys 拿出对象的所有属性名,比用for来遍历所有var更好的是该方法不需要判断是否属于对象本身
_.allKeys 拿出对象的所有属性名包括继承的对象的属性
_.values 拿出对象的所有值
_.mapObject 对对象内的所有属性进行计算
_.pairs 把对象的属性转换为数组,最后变为一个二维数组
_.pairs({one: 1, two: 2, three: 3});
=> [["one", 1], ["two", 2], ["three", 3]]
_.functions 返回对象的所有方法名,放在一个数组中
_.extend 继承,但是只对所有属性进行浅拷贝
_.extendOwn 之继承自己的属性
_.pick 抓取
_.omit 相当于删除, 但不改变对象本身的属性
_.defaults 设置默认属性,如果对象已经存在该属性则不改变
_.clone 浅拷贝
_.tap 跟_.chain 联合作用,可以在一连串操作中插入某个操作
_.property 获取某个属性 跟pick很类似,只是写法更简单,相当于pick的简化版
var stooge = {name: 'moe'};
'moe' === _.property('name')(stooge);
=> true
_.propertyOf(object) 是 _.property的反向方式作用一样
_.matcher 跟 _.filter配合使用,_.matcher先生成一个函数,然后当做第二个参数传给 _.filter 相当于一个对象属性比较的简化版 filter函数
_.isEqual 可以用来比较两个类里面的属性是否相等
_.isMatch 比较是否部分属性符合条件
_.isEmpty 对象或者序列是否是空的
_.isElement 对象是否是一个DOM对象
_.isArray 是否是一个数组
_.isObject 是否是一个对象
_.isNaN 有别于原生的isNaN方法,只有真正的NaN才返回true,原生方法连undefined都返回true
Utility 工具方法
_.noConflict() 返回underscore的别名
_.identity(value) 判断两个函数传入的参数是一样的
var stooge = {name: 'moe'};
stooge === _.identity(stooge);

=> true
_.constant(value) 创建一个函数,这个函数永远返回value
_.random(min, max) 创建随机数
_.mixin 可以在underscore里面加入你自定义的函数
_.uniqueId(pre) 创建独立id
_.unescape() 把 html 代码 转义出来,比如 &amp; 变成 &
_.result(object. prop, [defaultValue]) 手动调用object中的函数或者返回object中的属性,取决于prop是属性还是函数。如果prop找不到就返回 defaultValue
_.now 返回到当前时间戳
_.template(templateString, [settings]) 这是一个最简单的模板组件,
var compiled = _.template("hello: <%= name %>");
compiled({name: 'moe'});
=> "hello: moe"

var template = _.template("<b><%- value %></b>");
template({value: '<script>'});

=> "<b>&lt;script&gt;</b>"
<%= name %> 作为占位符
如果你想把传入的属性顺便转义成html代码,就用  <%- name %>
也可以用 <% print(...) %>
还可以通过 _.templateSettings.interpolate 修改占位符
Object-Oriented Style
可以换一种方式调用_
比如 _.map()  可以写成 _(...).map(function(){...})
Chaining
链式调用。记得最后用.value来获取最终的返回值
_.chain(lyrics).map(function(line) { return line.words.split(' '); }).flatten().reduce(function(counts, word) {counts[word] = (counts[word] || 0) + 1;return counts;}, {}).value();

Underscore.js API 学习笔记相关推荐

  1. js/jquery学习笔记

    javascript简介 JavaScript是一种基于对象和事件驱动并具有相对安全性的客户端脚本语言. 不同于服务器端脚本语言,例如PHP与ASP,JavaScript是客户端脚本语言,也就是说Ja ...

  2. 【带着canvas去流浪(11)】Three.js入门学习笔记

    [摘要] three.js 入门学习笔记 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 资料推荐及建议 1.官方文档 很详细,但是API部分单独 ...

  3. JS逆向学习笔记 - 持续更新中

    JS逆向学习笔记 寻找深圳爬虫工作,微信:cjh-18888 文章目录 JS逆向学习笔记 一. JS Hook 1. JS HOOK 原理和作用 原理:替换原来的方法. (好像写了句废话) 作用: 可 ...

  4. Crypto API 学习笔记一

    标 题: [原创]Crypto API 学习笔记一 作 者: jdxyw 时 间: 2006-09-01,16:47 链 接: http://bbs.pediy.com/showthread.php? ...

  5. Node.js+mongodb 学习笔记(三)swagger注释+用户管理

    Node.js+mongodb 学习笔记(三)swagger注释+用户管理 Node.js+mongodb 学习笔记(三)swagger注释+用户管理 用户注册 用户登录 修改密码 swagger注释 ...

  6. 数据可视化清新版【chart.js】学习笔记8.0—极地图(Polar Area)

    Polar Area--(极地图) 极地面积图类似于饼图,但每个线段具有相同的角度 - 线段的半径因值而异.当我们想要显示类似于饼图的比较数据,同时也要显示上下文的值的范围时通常使用这种类型的图表. ...

  7. Underscore.js 基础学习

    概述 Underscore对象封装 优先调用JavaScript 1.6内置方法 改变命名空间 链式操作 扩展Underscore 遍历集合 函数节流 模板解析 Underscore封装了常用的Jav ...

  8. SiKi学院 Unity中常用api学习笔记(001-014)

    Api 应用程序编程接口 前言 笔记是看siki学院中<Unity中常用api>的学习笔记 课程地址:  http://www.sikiedu.com/my/course/59 强烈推荐大 ...

  9. SiKi学院 Unity中常用api学习笔记(015-019)

    Api 应用程序编程接口 前言 笔记是看siki学院中<Unity中常用api>的学习笔记 课程地址:  http://www.sikiedu.com/my/course/59 强烈推荐大 ...

最新文章

  1. 使用 JavaCSV api 读取和写入 csv 文件
  2. Hello, World!我的房车编程生活,已经 150 天了
  3. Android初级第一讲---Android开发环境的配置
  4. 返回最大数,不同语言之间的比较
  5. 使用Android进行VR图像处理
  6. 【干货】数字化转型工作手册.pdf(附下载链接)
  7. e.target+addEventListener事件委托
  8. fadein和fadeto_jQuery fadeIn,fadeOut,fadeTo
  9. LaTeXila:Linux 的多语言 LaTeX 编辑器简介
  10. 【ASP.NET MVC4】第一课:初识ASP.NET MVC,创建第一个ASP.NET MVC项目
  11. 微信小程序获取unionid
  12. Excel 2010去掉网格线
  13. 苹果appstore中兑换码的使用方法
  14. 163邮箱手机收件服务器设置,网易邮箱全面默认开通IMAP 手机收信提速10倍
  15. 【asp.net】VS 2008中文版下载
  16. 橙子钱包app是谁做的?
  17. 微信内嵌H5网页 解决js倒计时失效
  18. pygame-KidsCanCode系列jumpy-part18-背景滚动
  19. 【云栖大会】马云口中创造未来的年轻人,把数据+环保玩出了新花样
  20. linux ftp登录530错误,Linux系统中用ftp连接530错误怎么办

热门文章

  1. 考博英语2个月复习备考攻略经验
  2. 京东苏宁价格战起底:裸泳者刺向阵痛者
  3. 同城配送小程序开发怎么做?
  4. HTML期末大作业——游戏介绍(HTML+CSS+JavaScript) web前端开发技术 web课程设计网页规划与设计 Web大学生网页成品
  5. Spine入门 之 认识界面
  6. 计算机视觉--Tensorflow对Mnist手写体数据集做手写体识别
  7. spark内存管理模块
  8. vscode+c/cpp+win10配置,exe文件分开存储
  9. 想接广告又怕掉粉?——微信公众号如何做粉丝维护
  10. 关于惠普台式电脑型号 HP-280-G1-MT无线网卡丢失情况处理