Lodash Js Part 2(Chaining and has method)
- 2019年11月29日
- 技術情報
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