Underscore
Underscore 基本用法
Collections
map() 对集合每一项进行一些操作,返回新数组
| _.map([1, 2, 3, 4, 5], i => i+1) // [2, 3, 4, 5, 6] | 
each() 遍历集合类似map
| _.each([1, 2, 3, 4, 5], i => console.log(i+1)) // 2 3 4 5 6 | 
reduce() 对集合进行操作且累计并返回结果,第三个参数为操作初始值
| _.reduce([1, 2 ,3], (memo, num) => memo + num, 0) // 6 | 
shuffle() 打乱集合顺序
| const arr = [1, 2, 3, 4, 5] | 
sample() 从集合中随机选择一个或指定数目的项
| const arr = [1, 2, 3, 4, 5] | 
every() 集合的每一个项都符合条件返回true,否则返回false
some() 集合的某一个项符合条件返回true,否则返回false
| _.every([0, 0, 0 ,0], item => item === 0 ) // true | 
find() 查找集合中符合条件的第一项
filter() 返回所有符合条件的元素
reject() 与 filter() 相反
| const p = [ | 
where() 返回包含条件的项
findWhere() 同 where,只返回第一个项
| const p = [ | 
contains() 包含指定的值,返回 true
| const arr = [1, 2, 3, 2] | 
pluck() 返回指定 key 的 value
| const p = [ | 
max() 返回最大值
min() 返回最小值
| const p = [ | 
groupBy() 按 key 把一个集合分成多个集合
| const p = [ | 
indexBy() 返回以指定 key的 value 分类的对象
| const p = [ | 
countBy() 返回依据条件分类的每一类的数目
| const p = [ | 
size() 返回集合长度
| _.size([1,2,3,4,5]) // 5 | 
partition() 返回数组包含两个数组,第一个符合条件,第二个不符合条件
| _.partition([1, 2, 3, 4, 5], i => i > 2) // [ [3, 4, 5], [1, 2] ] | 
数组(Arrays)
- 
first() 返回数组的第一个元素 
- 
initial() 返回除最后一个(或多个)以外的元素 
- 
last() 返回数组的最后一个元素 
- 
rest() 返回除第一个(或多个)以外的元素 _.first([1, 2, 3, 4, 5]) // 1 
 _.first([1, 2, 3, 4, 5], 2) // [1, 2]
 _.initial([1, 2, 3, 4, 5]) // [1, 2, 3, 4]
 _.last([1, 2, 3, 4, 5]) // [5]
 _.rest([1, 2, 3, 4, 5]) // [2, 3, 4, 5]
- 
compact() 返回不包含 false 值的数组 _.compact([0, 1, 2, false, '', null, undefined]) // [1, 2] 
- 
flatten() 将多层嵌套的数组转化成减少至一层,传递第二个参数为 true 就只减少一层 _.flatten([1, [2, [3]]]) // [1, 2, 3] 
 _.flatten([1, [2, [3]]], true) // [1, 2, [3]]
- 
without() 返回一个不包含指定值的数组 _.without([0, 1, 2, 3, 4, 4], 3, 4) // [0, 1, 2] 
- 
union() 返回传入数组的并集 _.union([1, 2, 3],[3, 4, 5], [7, 6, 5]) // [1, 2, 3, 4, 5, 7, 6] 
- 
intersection() 返回传入数组的交集 _.intersection([1,2,3,6],[3,4,5,6],[6,5,4,3,2]) // [3, 6] 
- 
difference() 接受两个数组,返回第一个数组中不包含第二个数组的值的数组、 _.difference([1,2,3,6],[3,4]) // [1, 2, 6] 
- 
uniq() 返回一个去重后的新数组 _.uniq([6,1,2,3,4,6,5,5,4]) // [6, 1, 2, 3, 4, 5] 
- 
zip() 将接收数组的值按对应的下标合并 _.zip(['k', 'j', 'hi'],[3, 1, 2]) // [['k', 3], ['j', 1], ['hi', 2]] 
- 
object() 合并数组为对象,如 key 重复就返回最后一个值 _.object(['name', 'age'],['jay', 18]) // {name: "jay", age: 18} 
 _.object(['name', 'age', 'age'],['jay', 18, 14]) // {name: "jay", age: 14}
- 
indexOf() 返回指定值在数组中的下标 
- 
lastIndexOf() 返回指定值在数组中从后开始的下标 _.indexOf([1, 'hi', 'jay'], jay) // 2 
 _.indexOf([1, 'hi', 'jay'], jay) // 0
- 
range() 接收一个开始数字和一个结束数字,生成一个数字数组 _.range(5) // [0, 1, 2, 3, 4] 
 _.range(0, -10, 3) // [0, -3, -6, -9]
 _.range(0, 10, 3) // [0, 3, 6, 9]
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 日常小记!
 评论
TwikooDisqus

