技術情報

Lodash Js Array & Object – Part 3 (Final)

Today I will talk about dealing with array and object in Lodash Js.

Filter

  • Filtering a list to transform the elements we want to get back
var numbers = _.range(0,10);      // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

var evenNumbers = _.filter(numbers, function(e){ return e % 2 != 0; });
// evenNumbers is now [ 0, 2, 4, 6, 8 ]

Reduce

  • Reducing a list of objects to a single value.
  • Ex=>A group of people can buy a meal or not. In that case we have to check out they have the enough amount by the sum of money they have.
  • (Each’s money => sum money)
var ppl = [
    {
        'name': 'Keita',
        'money': 1000
    },
    {
        'name': 'Sato',
        'money': 3000
    },
    {
        'name': 'Ruma',
        'money': 500
    },
]

var sumMoney = function(data){
    return _.reduce(
        data,
        function(accumulated, e){
            return accumulated + e.money;
        },
        0
    );
}

function canBuyMeal(data){
    return 3500 < sumMoney(data);
}

canBuyMeal(ppl);    // returns true

Some

  • If there is at least one record in a collection that meets some criteria.
var ppl = [
    {
        'name': 'Keita',
        'hasMoney': true
    },
    {
        'name': 'Sato',
        'hasMoney': false
    },
    {
        'name': 'Ruma',
        'hasProperty': true
    },
]

function canLive(data){
    return _.some(data, function(e){ return e.hasProperty; });
}

canGroupDrive(ppl);    // returns true

Map

  • Useful for changing a list into a different list in a purely declarative way.
  • Can just specify how you want to manipulate an element of a list.
  • Make a new list transformed by providing a function
var res1 = _.range(5);       // [ 0, 1, 2, 3, 4]

var res2 = _.map(a, function(e){ return e + e;} );

//result is [0, 2, 4, 6, 8]

By Yuuma



[php] printf sprintf vprintf vsprintf の違いについて(その2)

PHPでフォーマットした文字列の出力をおこなう際に使用する関数、
printf sprintf vprintf vsprintf の使い分けについて記載します。

続きを読む

Lodash Js Part 2(Chaining and has method)

Today I will talk about chaining functions and has method.

Chaining

Without Chaining

var data1 = [10, 15, 20, 25, 15];

var data2 = _.filter(data1, function(item){ return item % 10 === 5 });
// data2 now contains [15, 25, 15]

var data3 = _.uniq(data2);
// data3 now contains [15, 25]

var data4 = _.map(data3, function(item){ return item + 1 });
// data4 now contains [16, 26]

With Chaining

var data1 = [10, 15, 20, 25, 15];

var data4 = _(data1)
    .filter(function(item){ return item % 10 === 5 })
    .uniq()
    .map(function(item){ return item + 1 })
    .value();
// data4 now contains [16, 26]
  • The chaining is more efficient.
  • no intermediate results are created.

Slight Changes for Explicit Chain & Implicit Chain

Explicit chaining

Still need to unwrap the result with .value().

var data = [1, 5, 10, 15, 5, 10, 1, 20];

var unqSum = _.chain(data)
   .uniq()
   .sum()       
   .value();   
result is 51

Implicit chaining

The “unwrapping” of the single value is implied. (there is no need to call .value().)

var data = [1, 5, 10, 15, 5, 10, 1, 20];

var unqSum = _(data)
    .uniq()
    .sum();  
    
    //result is 51

has

  • Determine if an object has (or contains) a key.
var obj = {
  data1: 2,
  data2: 3,
  data3: {
    data3_1:40,
    data3_2:{
      data3_2_1:500
    }
  }
};

var res1 = _.has(obj, "data1");          // true
var res2 = _.has(obj, "data1.data2");        // false
var res3 = _.has(obj, "data3");          // true
var res4 = _.has(obj, "data3.data3_2");       // true
var res5 = _.has(obj, "data3.res3_2_1");      // false
var res6 = _.has(obj, "data3.data3_1.data3_2_1");   // false
var res7 = _.has(obj, "data3.data3_2.data3_2_1");   // true
  • Arrays can be used to split up parts.
var res8 = _.has(obj, ["data1", "data2"]);   // false, same as res2
var res9 = _.has(obj, ["data3", "data3_2"]);  // true, same as res4

By Yuuma



[php] printf sprintf vprintf vsprintf の違いについて(その1)

PHPでフォーマットした文字列の出力をおこなう際に使用する関数、
printf sprintf vprintf vsprintf の使い分けについて記載します。

続きを読む

Introduction to Loadash Js and its `identity` property (part 1)

What is Lodash

Lodash is a JavaScript library which provides utility functions for common programming tasks, delivering consistency, modularity and performance etc and it provides simple to use methods that solve common problems.

Why Lodash

  • Provides consistent cross browser support.
  • Able to use both for frontend & backend.
  • Lodash can follow DRY principle.
  • Performance and optimization for speed is better rather than native and more readable.
  • Declarative type.
  • Have good amount of contributors and active in their respositories.
  • Support every browser basically.

How

  • Can use locally or globally
  • Can also go through with npm
  • For backend use, have to require lodash in code.

I will introduce with a property called identity using in lodash js

Identity

var res = _.identity('hlaing', 'tin');
// res is hlaing

Method returns the first argument

_.identity in documentation of _.findKey and _.findLastKey

var data = {
    topic: "lodash",
    desc: "js library",
    awesome: "chaining"
};

var keyRes = _.findKey(p);        // returns "topic"
var lastKeyRes = _.findLastKey(p);    // returns "awesome"

// same with above 
var keyRes = _.findKey(p, _.identity);
var lastKeyRes = _.findLastKey(p, _.identity);

// which again means the same scenario:
var keyRes = _.findKey(p, function(x) { return x; }
var lastKeyRes = _.findLastKey(p, function(x) { return x; }

I introduced the identity property this week and will introduce the rest functionalities in coming weeks.

By Yuuma




アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム