https://www.cnblogs.com/jiangxiaobo/p/5823628.html
https://blog.csdn.net/weixin_40969472/article/details/78625628
从其他语言转向Javascript时,通常都会遇到一些困惑性问题。比如,Java中的HashMap在Javascript中如何实现?Javascript面向对象式编程如何实现继承?如何实现通用的iterator对集合对象做遍历?如何对Array实现快速排序?….
如果你真的可以自己实现这些功能,那么你的Javascript基础很扎实的!我很佩服你!但对于大部分人来说,这些基础功能应该是由底层API支持的,就像JDK一样。Underscore为我们提供了这样的一个实用工具包,而且它真的很实用!
目录
- Underscore介绍
- Underscore安装
- 集合部分:数组或对象
- 数组部分
- 函数部分
- 对象部分
- 实用功能
- 链式语法
- 字符串处理Underscore.String
1. Underscore介绍
Underscore 是一个JavaScript实用库,提供了类似Prototype.js的一些功能,但是没有继承任何JavaScript内置对象。它弥补了部分jQuery没有实现的功能,同时又是Backbone.js必不可少的部分。
Underscore提供了80多个函数,包括常用的: map, select, invoke — 当然还有更多专业的辅助函数,如:函数绑定, JavaScript模板功能, 强类型相等测试, 等等. 在新的浏览器中, 有许多函数如果浏览器本身直接支持,将会采用原生的,如 forEach, map, reduce, filter, every, some 和 indexOf.
Underscore介绍来自官方文档,Underscore.js (1.7.0) 中文API文档:http://www.css88.com/doc/underscore/
2. Underscore安装
Underscore.js是一个Javascript功能类库,不依赖于环境,可以加载到HTML中在浏览器运行,也可以直接在nodejs的环境中使用。
3. 集合部分: 数组或对象
新建一个collection.js文件,测试underscore对集合的支持。
each: 对集合循环操作
map: 对集合以map方式遍历,产生一个新数组
reduce: 集合元素合并集的到memo
filter: 过滤集合中符合条件的元素。注:find:只返回第一个
reject: 过滤集合中不符合条件的元素
where: 遍历list, 返回新的对象数组
contains:判断元素是否在list中
invoke:通过函数名调用函数运行
pluck: 提取一个集合里指定的属性值
max,min,sortBy: 取list中的最大,最小元素,自定义比较器
groupBy: 把一个集合分组成多个集合
countBy: 把一个数据分组后计数
shuffle: 随机打乱一个数据
toArray: 将list转换成一个数组
size: 得到list中元素个数
4. 数组部分
新建一个array.js
first,last,initial,rest: 数组的元素操作。
indexOf,lastIndexOf,sortedIndex:取索引位置
range: 创建一个范围整数数组
compact:数组去除空值
flatten:将一个嵌套多层的数组(嵌套可以是任何层数)转换为只有一层的数组
without: 去掉元素
union,intersection,difference,uniq: 并集,交集,差集,取唯一
zip: 合并多个数组中的元素,是group的反向操作
object: 把数组转换成对象