网友真实露脸自拍10p,成人国产精品秘?久久久按摩,国产精品久久久久久无码不卡,成人免费区一区二区三区

小程序模板網

擴展微信小程序框架功能:函數功能增強Underscore.js 、Lodash

發布時間:2018-04-14 14:44 所屬欄目:小程序開發教程

Underscore.js 和 Lodash 是最常用的JavaScript庫。

Underscore.js 它提供了一整套函數式編程的實用功能提供了100多個函數,包括常用的:map、filter、invoke — 當然還有更多專業的輔助函數,如:函數綁定、JavaScript 模板功能、創建快速索引、強類型相等測試等等。

lodash 一開始是 Underscore.js 庫的一個 fork,因為和其他(Underscore.js的)貢獻者意見相左。John-David Dalton的最初目標,是提供更多“一致的跨瀏覽器行為……,并改善性能”。之后,該項目在現有成功的基礎之上取得了更大的成果。

Underscore.js

Underscore.js是一個 JavaScript 工具庫,提供了類似 Prototype 功能的編程支持,但沒有對 JavaScript 內置的對象進行擴展。。Underscore.js定義了一個下劃線(_)對象,函數庫的所有方法都屬于這個對象。這些方法大致上可以分成:集合(collection)、數組(array)、函數(function)、對象(object)和工具(utility)五大類。

Underscore.js使用

以一個對象為例:

    var obj = {name: 'dog', age: '3', color: 'white'};

獲取對象的所有屬性名

    console.log(_.keys(obj)); // 輸出:["name", "age", "color"]

獲取對象的所有屬性值

    console.log(_.values(obj)); // 輸出:["dog", 3, "white"]

把一個對象轉換成一個 [key, value] 形式的數組

    console.log(_.pairs(obj)); // 輸出:[["name", "dog"], ["age", 3], ["color", "white"]]

返回一個對象的副本, 并且里面鍵和值是對調的(要使之有效, 必須確保object里所有的值都是唯一的且可以序列號成字符串.)

    console.log(_.invert(obj)); // 輸出:Object {3: "age", dog: "name", white: "color"}

復制 source 對象的所有屬性到 destination 對象上, 然后返回 destination 對象上

    console.log(_.extend({weight: 10}, obj)); // 輸出:Object {name: "dog", age: 3, color: "white", weight: 10}

返回一個對象的副本, 過濾掉除了 keys 以外的所有屬性(一個或多個)

    console.log(_.pick(obj, 'name', 'color')); // 輸出:Object {name: "dog", color: "white"}

返回一個對象的副本, 過濾掉了黑名單里的 keys (keys可以是單個key也可以是包含多個key的數組)

    console.log(_.omit(obj, 'color')); // 輸出:Object {name: "dog", age: 3}

Lodash

Lodash是一個具有一致接口、模塊化、高性能等特性的 JavaScript 工具庫。它內部封裝了諸多對字符串、數組、對象等常見數據類型的處理函數,其中部分是目前 ECMAScript 尚未制定的規范,但同時被業界所認可的輔助函數。

與Underscore一樣,lodash的名字也是源于所有函數前面的那個字符。就像jQuery在全部函數前加全局的$一樣,lodash使用全局的_來提供對工具的快速訪問。例如,要對數組的所有元素執行某個行為:

    _.each([1, 2], function(n) { console.log(n); });

Lodash 提供的函數主要分為以下幾類:

  • Array,適用于數組類型,比如填充數據、查找元素、數組分片等操作
  • Collection,適用于數組和對象類型,部分適用于字符串,比如分組、查找、過濾等操作
  • Function,適用于函數類型,比如節流、延遲、緩存、設置鉤子等操作
  • Lang,普遍適用于各種類型,常用于執行類型判斷和類型轉換
  • Math,適用于數值類型,常用于執行數學運算
  • Number,適用于生成隨機數,比較數值與數值區間的關系
  • Object,適用于對象類型,常用于對象的創建、擴展、類型轉換、檢索、集合等操作
  • Seq,常用于創建鏈式調用,提高執行性能(惰性計算)
  • String,適用于字符串類型

lodash的一大亮點在于其模塊化:開發者可以按需加載,而非引用整個庫。每一個模塊都暴露在npm中,所以開發者可以獨立地引用它們:

    npm install lodash.map
    var map = require('lodash.map');

Lodash使用

以一個對象數組為例

    var employees = [
        { 'name': 'zhangsan',  'age': 30, salary: 5000 },
        { 'name': 'lisi',    'age': 36, salary: 4000 },
        { 'name': 'wangwu', 'age': 32, salary: 6000 }
    ];

獲取所有員工姓名,并以”,“分割

    var names = _.chain(employees)
        .map(function (employee) {            return employee.name;
        })
        .join(",")
        .value();    console.log(names); // 輸出:zhangsan,lisi,wangwu

以上代碼,首先將employees對象包裝成為lodash對象,再map獲取所有用戶的名稱,并最后利用join將用戶名稱以”,“連接在一起。

獲取最年輕的員工

    var o1 = _.chain(employees)
        .sortBy("age")
        .map(function (employee) {            return employee;
        })
        .first()
        .value();    console.log(o1); // 輸出:Object {name: "zhangsan", age: 30, salary: 5000}

獲取工資最多的員工

    var o2 = _.chain(employees)
        .orderBy("salary", "desc")
        .map(function (employee) {            return employee;
        })
        .first()
        .value();    console.log(o2); // 輸出:Object {name: "wangwu", age: 32, salary: 6000}

獲取年齡等于36的員工

    var o3 = _.chain(employees)
        .filter(function (employee) {            return employee.age = 36;
        })
        .map(function (employee) {            return employee;
        })
        .first()
        .value();    console.log(o3); // 輸出:Object {name: "lisi", age: 36, salary: 4000}

數組到Map的轉換

    var hashmap  = _.fromPairs(employees.map(function(employee) {        return [employee.name, employee];
    }));    var o4 = hashmap ["wangwu"];    console.log(o4); // 輸出:Object {name: "wangwu", age: 36, salary: 6000}

其他



易優小程序(企業版)+靈活api+前后代碼開源 碼云倉庫:starfork
本文地址:http://www.xiuhaier.com/wxmini/doc/course/23380.html 復制鏈接 如需定制請聯系易優客服咨詢:800182392 點擊咨詢
QQ在線咨詢
AI智能客服 ×