Lodash使用示例(比較全)


<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Lodash使用示例</title>
    <script src="~/Js/lodash.core.min.js"></script>
    <script>
        var users = [
            { 'user': 'barney', 'age': 36 },
            { 'user': 'fred', 'age': 40 },
            { 'user': 'pebbles', 'age': 18 }
        ];
        var nums = [1, 2, 3];

        /*****************************查找****************************************/
        var names = _
            .chain(users)
            .map(function (o) {
                return o.user;
            })
            .join(",")
            .value();
        console.log(names);
        // => barney,fred,pebbles

        console.log(_.find(users, function (o) { return o.age >= 40; }));
        // => object for 'fred'

        /******************************查找***************************************/
        var oldest = _
            .chain(users)
            .sortBy('age')
            .map(function (o) {
                return '最年長的是:' + o.user + ' is ' + o.age;
            })
            .last()
            .value();
        console.log(oldest);
        // => 最年長的是:fred is 40

        /*************************************************************************/
        var youngest = _
            .chain(users)
            .sortBy('age')
            .map(function (o) {
                return '最年輕的是:' + o.user + ' is ' + o.age;
            })
            .head()
            .value();
        console.log(youngest);
        // => 最年輕的是:pebbles is 18

        /*************************************************************************/
        var userObj = _.chain(users)
            .map(function (o) {
                return [o.user, o.age];
            })
            .value();
        console.log(userObj[0]);
        // => ["barney", 36]

        /*************************************************************************/
        /*
            創建一個新數組,包含原數組中所有的非假值元素。
            例如false, null, 0, "", undefined, 和 NaN 都是被認為是“假值”。
        */
        var compact = _.compact([0, 1, false, 2, '', 3]);
        console.log(compact); 
        // => [1, 2, 3]

        /*************************************************************************/
        /*  _.difference(array, [values])
            array (Array): 要檢查的數組。
            [values] (...Array): 排除的值。
        */
        //var difference = _.difference([3, 2, 1], [4, 2]);
        console.log(_.difference([3, 2, 1], [4, 2]));
        // => [3, 1]

        /*************************************************************************/
        var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
        var differenceWith = _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);
        console.log(differenceWith);
        // => [{ 'x': 2, 'y': 1 }]

        /*************************************************************************/
        //創建一個切片數組,去除array前面的n個元素。(n默認值為1。)
        console.log(_.drop(nums, nums.length - 1));
        // => [3]

        /*************************************************************************/
        //創建一個切片數組,去除array尾部的n個元素。(n默認值為1。)
        console.log(_.dropRight(nums, nums.length - 1));
        // => [1]

        /*************************************************************************/
        console.log(_.dropWhile(users, function (o) { return o.age == 36; }));
        // => objects for ['fred', 'pebbles']

        /*************************************************************************/
        //返回找到元素的 索引值(index),找不到則返回 -1。
        console.log(_.findIndex(users, function (o) { return o.user == 'fred'; }));
        // => 1

        /*************************************************************************/
        console.log(_.head([3, 2, 1]));
        console.log(_.first([3, 2, 1]));
        // => 3

        /*************************************************************************/
        //返回 值value在數組中的索引位置, 沒有找到為返回-1。
        console.log(_.indexOf([1, 2, 3, 2], 2));
        // => 1

        /*************************************************************************/
        //去除數組array中的最后一個元素
        console.log(_.initial([1, 2, 3]));
        // => [1, 2]

        /*************************************************************************/
        //返回一個包含所有傳入數組交集元素的新數組
        console.log(_.intersection([2, 1], [4, 2], [1, 2]));
        // => [2]

        /*************************************************************************/
        var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];
        var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];
        console.log(_.intersectionWith(objects, others, _.isEqual));
        // => [{ 'x': 1, 'y': 2 }]

        console.log(_.join(['a', 'b', 'c'], ','));
        // => a,b,c

        //返回array中的最后一個元素
        console.log(_.last([1, 2, 3]));
        // => 3

        //獲取array數組的第n個元素 索引從0開始,如果n為負數,則返回從數組結尾開始的第n個元素
        console.log(_.nth([1, 2, 3], 1));
        // => 2
        console.log(_.nth([1, 2, 3, 4], -1));
        // => 4

        /*************************************************************************/
        //移除數組array中所有和給定值相等的元素
        console.log(_.pull([1, 2, 3, 1, 2, 3], 2, 3));
        // => [1, 1]
        console.log(_.pullAll([1, 2, 3, 1, 2, 3], [2, 3]));
        // => [1, 1]

        //這個方法類似於_.pullAll 
        //區別是這個方法接受一個 iteratee(迭代函數),通過產生的值進行了比較。
        console.log(_.pullAllBy(
            [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }],
            [{ 'x': 1 }, { 'x': 3 }],
            'x'));
        // => [{ 'x': 2 }]

        console.log(_.pullAllWith(
            [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }],
            [{ 'x': 3, 'y': 4 }],
            _.isEqual));
        // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]

        /*************************************************************************/
        //返回被移除元素組成的新數組。
        var array = [5, 10, 15, 20];
        var evens = _.pullAt(array, 1, 3);
        console.log(array);
        // => [5, 15]
        console.log(evens);
        // => [10, 20]

        /*************************************************************************/
        //返回被移除元素組成的新數組。
        var array = [1, 2, 3, 4];
        var evens = _.remove(array, function (n) {
            return n % 2 == 0;
        });
        console.log(array);
        // => [1, 3]
        console.log(evens);
        // => [2, 4]

        console.log(_.reverse([1, 2, 3]));
        // => [3, 2, 1]

        //_.slice(array, [start=0], [end=array.length])
        //裁剪數組array,從 start 位置開始到end結束,但不包括 end 本身的位置
        console.log(_.slice([1, 2, 3], 1));
        // => [2, 3]

        //返回一個新的不重復的數組
        console.log(_.uniq([1, 1, 2, 1, 1, 2, 3]));
        // => [1, 2, 3]
        var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];
        console.log(_.uniqWith(objects, _.isEqual));
        // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]

        /*************************************************************************/
        var arr = [
            { name: 'aa', age: 22 },
            { name: 'bb', age: 18 },
            { name: 'cc', age: 40 }
        ];
        console.log(_.sortBy(arr, function (o) { return o.age; }));
        console.log(_.sortBy(arr, ['age']));  //可多字段排序['name','age']

        console.log(_.groupBy([6.1, 4.2, 6.6], Math.floor));
        // => { '4': [4.2], '6': [6.1, 6.3] }

        /*****************************循環***************************************/
        _([1, 2]).forEach(function (value) {
            console.log(value);
        });
        // => Logs '1' then '2'

        _.forEach({ 'a': 1, 'b': 2 }, function (value, key) {
            console.log(key + " " + value);
        });
        // => Logs 'a 1' then 'b 2' 


        /*****************************查找***************************************/
        var collection1 = [
            { name: 'aa', age: 20, gender: 'm' },
            { name: 'bb', age: 21, gender: 'f' },
            { name: 'cc', age: 22, gender: 'm' }
        ];

        /*****************************包含***************************************/
        console.log(_.includes({ 'user': 'fred', 'age': 40 }, 'fred'));
        // => true

        /*****************************包含***************************************/
        function square(n) {
            return n * n;
        }
        console.log(_.map([4, 8], square));
        // => [16, 64]

        /*****************************排序***************************************/
        var users = [
            { 'user': 'fred', 'age': 48 },
            { 'user': 'barney', 'age': 34 },
            { 'user': 'fred', 'age': 40 },
            { 'user': 'barney', 'age': 36 }
        ];
        // 以 `user` 升序排序 再  `age` 以降序排序。
        console.log(_.orderBy(users, ['user', 'age'], ['asc', 'desc']));
        // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]

        /*****************************長度***************************************/
        console.log(_.size([1, 2, 3]));
        // => 3
        console.log(_.size('pebbles'));
        // => 7
        console.log(_.size('歌曲abc'));
        // => 5

        //now 獲得 Unix 紀元 (1 January 1970 00:00:00 UTC) 直到現在的毫秒數。
        //var temp = _.defer(function (stamp) {
        //    console.log(_.now() - stamp);
        //}, _.now());
        //console.log(_.now() + "______" + temp);

        /*****************************強制轉換數組************************************/
        //如果不是數組, 那么強制轉為數組。
        console.log(_.castArray(1));
        // => [1]

        console.log(_.castArray({ 'a': 1 }));
        // => [{ 'a': 1 }]

        console.log(_.castArray('abc'));
        // => ['abc']

        /*****************************拷貝************************************/
        //_.clone(value) 創建一個 value 的淺拷貝
        var objects = [{ 'a': 1 }, { 'b': 2 }];
        var shallow = _.clone(objects);
        console.log(shallow[0] === objects[0]);
        // => true

        /*****************************等於************************************/
        var object = { 'a': 1 };
        var other = { 'a': 1 };
        console.log(_.eq(object, object));  // => true
        console.log(_.eq(object, other));  // => false
        console.log(_.eq(1, 1));  // => false

        console.log("--------------------------------------------------------"); 
        /*****************************大於************************************/
        console.log(_.gt(3, 1));  // => true
        /*****************************大於等於********************************/
        console.log(_.gte(3, 3));  // => true
        /*****************************小於************************************/
        console.log(_.lt(1, 3)); // => true
        /*****************************小於等於********************************/
        console.log(_.lte(3, 3));  // => true

        //是否數組
        console.log(_.isArray([1, 2, 3]));   // => true
        console.log(_.isArray('abc'));   // => false
        //是否boolean型
        console.log(_.isBoolean(false));  // => true

        console.log("--------------------------------------------------------");
        //是否日期類型
        console.log(_.isDate('02 31 2017')); // => false
        console.log(_.isDate(new Date)); // => true
        //是否整數
        console.log(_.isInteger(3)); // => true
        console.log(_.isInteger(3.1)); // => false
        console.log(_.isInteger('3')); // => false
        //是否字符串
        console.log(_.isString('abc')); // => true
        console.log(_.isString(1)); // => false
        /*****************************轉換成數組********************************/
        console.log(_.toArray('abc'));
        // => ['a', 'b', 'c']

        //向上取精度 _.ceil(number, [precision=0])
        console.log(_.ceil(6.014, 2));
        // => 6.02

        //向下取精度 _.floor(number, [precision=0])
        console.log(_.floor(6.014, 2));
        // => 6.01

        //四舍五入取精度
        console.log(_.round(4.006, 2));
        // => 4.01

        //返回最大數
        console.log(_.max([4, 2, 8, 6])); // => 8
        console.log(_.maxBy(users, function (o) { return o.age })); // => {user: "fred", age: 48}

        //返回平均值
        console.log(_.mean([4, 2, 8, 6])); // => 5
        console.log(_.meanBy(users, function (o) { return o.age })); // => 39.5

        //返回最小數
        console.log(_.min([4, 2, 8, 6])); // => 2
        console.log(_.minBy(users, function (o) { return o.age })); // => {user: "barney", age: 34}

        //求和
        console.log(_.sum([4, 2, 8, 6])); // => 20
        console.log(_.sumBy(users, function (o) { return o.age })); // => 158

        //檢查字符串string是否以給定的target字符串開始
        console.log(_.startsWith('abc', 'a')); // => true
        //檢查字符串string是否以給定的target字符串結尾
        console.log(_.endsWith('abc', 'c'));  // => true

        /*****************************Pad填充********************************/
        console.log(_.pad('abc', 8, '#')); // => ##abc###
        console.log(_.padEnd('abc', 8, '#')); // => abc#####
        console.log(_.padStart('abc', 8, '#')); // => #####abc

        console.log(_.repeat('abc', 2)); // => 'abcabc'
        console.log(_.repeat('abc', 0)); // => ''

        console.log(_.replace('Hi Fred Fred', 'Fred', 'Barney')); // => 'Hi Barney Fred'

        console.log(_.trim('##abc###', '#')); // => abc
        console.log(_.trimStart('##abc###', '#')); // => abc###
        console.log(_.trimEnd('##abc###', '#')); // => #abc

        console.log(_.truncate('hi-diddly-ho there, neighborino', { 'length': 5 })); // => hi...
    </script>
</head>
<body>
    <div>
    </div>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM