美文网首页
JavaScript中的undersocre

JavaScript中的undersocre

作者: 鱿鱼炸酱面 | 来源:发表于2021-07-05 13:59 被阅读0次

    JavaScript中第三方库underscore提供了一套完善的函数式编程的接口,与jQuery类似,它会把自身绑定到唯一的全局变量_上,这也是为何它的名字叫underscore.
    比如,underscore的map()可以作用与Array和Object:

    _.map([1, 2, 3], (x) => x * x); // [1, 4, 9]
    _.map({ a: 1, b: 2, c: 3 }, (v, k) => k + '=' + v); // ['a=1', 'b=2', 'c=3']
    

    1.Collections

    对集合类对象提供的接口,仅支持Array和Object,不支持Map和Set

    map/mapObject  //返回映射/对象映射后的集合类对象,传入callback
    filter  //返回过滤后的集合类对象,传入callback
    every / some  //返回是否所有元素的布尔值/返回是否有>1个元素符合的布尔值,传入callback
    max / min  //返回最大值/最小值
    groupBy  // 返回分组后的集合类对象,传入callback
    shuffle / sample  // 返回打乱顺序后集合类对象/返回随机取指定个数元素的集合类对象
    

    2.Arrays

    对array提供的函数

    first / last  //取array的第一个值和最后一个值
    flatten  //将多维array展开为一维
    zip / unzip  //将两个array压缩成二维列表/unzip相反
    object  //类似zip,但将两个array转为object
    range  // 类似python,快速生成一个array
    

    3.Functions

    对函数提供的函数

    bind(object.function, object)  // 返回一个新的函数,该函数可以调用原对象的函数功能,传入一个对象的函数和对象本身,
    partial  // 返回一个固定了某个参数的新函数,称为偏函数,用法与python一致
    memoize   //返回一个新函数,该函数可以实现缓存原函数之前相同的调用结果
    once  // 返回一个新函数,该函数可以保证某个函数执行且仅执行一次
    delay  // 可以让一个函数延迟执行,效果和setTimeout()一样
    

    4.Objects

    针对Object的功能接口

    keys / allKeys  //返回对象的key的array,包含/不包含原型链继承的key
    values  //返回对象不包含原型链的value的array
    mapObject  //针对对象的map方法
    invert  //交换key和value
    extend / extendOwn  // 将多个对象合为一个, extendOwn不包含原型链继承的
    clone  //浅拷贝一个对象
    isEqual  //返回布尔值,对两个对象进行深度比较
    

    Chaining

    Chaining是指链式调用
    underscore提供了把对象包装成能进行链式调用的方法,就是chain()函数:

    var r = _.chain([1, 4, 9, 16, 25])
             .map(Math.sqrt)
             .filter(x => x % 2 === 1)
             .value();
    console.log(r); // [1, 3, 5]
    

    因为每一步返回的都是包装对象,所以最后一步的结果需要调用value()获得最终结果。

    相关文章

      网友评论

          本文标题:JavaScript中的undersocre

          本文链接:https://www.haomeiwen.com/subject/fxzbultx.html