JavaScript学习-underscore

2019-04-24  本文已影响0人  LittleJessy
  underscore则提供了一套完善的函数式编程的接口,让我们更方便地在

JavaScript中实现函数式编程。
jQuery在加载时,会把自身绑定到唯一的全局变量 $ 上,underscore与其类似,
会把自身绑定到唯一的全局变量 _ 上,这也是为啥它的名字叫underscore的原
因。

collections

  underscore为集合类对象提供了一致的接口。集合类是指Array和Object,暂不支持Map和Set。
  1. map/filter
    underscore的 map() 和 filter() 可以作用于Object。当作用于Object时,传入的函数
    为 function (value, key) ,第一个参数接收value,第二个参数接收key:


    image.png
  2. every/some
    当集合的所有元素都满足条件时, _.every() 函数返回 true ,当集合的至少一
    个元素满足条件时, _.some() 函数返回 true :


    image.png

    集合为object时:


    image.png
  3. max/min
    这两个函数直接返回集合中最大和最小的数:


    image.png

    集合为object时,max()和min()只作用于value,忽略掉key:


    image.png
  4. groupBy
    把集合的元素按照key归类,key由传入的函数返回:


    image.png
  5. shuffle/sample
    shuffle()用洗牌算法随机打乱一个集合:


    image.png

    sample()则是随机选择一个或多个元素:


    image.png

Arrays,针对数组的函数

  1. first/last
    这两个函数分别取第一个和最后一个元素


    image.png
  2. flatten
    flatten()接收一个Array,无论这个Array里面嵌套了多少个Array,flatten()最后都把它们变成一个一维数组:


    image.png
  3. zip/unzip
    zip()把两个或多个数组的所有元素按索引对齐,然后按索引合并成新数组:


    image.png

    unzip()则反过来:


    image.png
  4. object


    image.png
  5. range
    快速生成一个序列,不再需要用for循环实现


    image.png

objects,针对对象的函数

  1. keys/allKeys
    keys()可以非常方便地返回一个object自身所有的key,但是不包含从原型链继承下来的:


    image.png

    allKeys()除了object自身的key,还包含从原型继承下来的:


    image.png
  2. values
    返回object自身但不包含原型链继承的所有值


    image.png
  3. mapObject


    image.png
  4. invert
    invert()把object的每个key-value交换位置,key变为value,value变成key:


    image.png
  5. extend
    extend()把多个object的key-value合并到第一个object并返回,如果有相同的key,后面的object的value将覆盖前面的object的value:


    image.png
  6. clone
    复制一个object对象,将原有对象的所有属性都复制到新的对象中,clone()为‘浅复制’,两个对象相同的key所引用的value其实是同一个对象:


    image.png
  7. isEqual
    isEqual()对两个object进行深度比较,如果内容完全相同,则返回true:


    image.png

    isEqual()也可以对Array进行比较:


    image.png
上一篇下一篇

猜你喜欢

热点阅读