技術情報
- 2019年12月06日
- 技術情報
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
yuuma at 2019年12月06日 11:00:39
- 2019年12月05日
- 技術情報
[php] printf sprintf vprintf vsprintf の違いについて(その2)
nishida at 2019年12月05日 10:00:45
- 2019年11月29日
- 技術情報
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
yuuma at 2019年11月29日 11:00:07
- 2019年11月28日
- 技術情報
[php] printf sprintf vprintf vsprintf の違いについて(その1)
nishida at 2019年11月28日 10:00:45
- 2019年11月22日
- 技術情報
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
yuuma at 2019年11月22日 10:00:42