JavaScript Lodash_.chain() 方法
什么是Lodash
Lodash是一个JavaScript库,它拥有许多内置函数,并为开发人员提供实用程序和更多功能。它是构建在JavaScript的underscore.js库之上的。
Lodash._chain() 方法
此方法用于包装从方法链序列中获取的值,并返回方法链的确切包装值。
方法链的概念
如果我们想要依次执行多个操作,并且一个操作的输入取决于前一个操作的输出,则我们使用Lodash库提供的方法链的概念。
方法链意味着在对象上依次调用多个函数。这样,代码流程看起来像一句话,有时也称为方法级联。
方法链的开发是为了避免嵌套方法带来的混淆和复杂性。如果我们想要在对象或数组上执行多个函数,那么我们还可以使用嵌套方法,其中一个函数包含另一个函数,它又包含另一个函数,依此类推。
语法
_.chain(value)
value:
这个函数接受的单个参数,它包含我们想要使用这个函数进行包装的值。
返回值:
这个函数将返回作为参数传递的实际值的包装值。
让我们通过一些示例来更好地理解这个方法。
示例1
JavaScript代码:
// importing the library
const _ = require('lodash');
// creating an object
var friend = [
{ 'userName': 'Ayush', 'income': 2600 },
{ 'userName': 'Ankit', 'income': 3200 },
{ 'userName': 'Gopal', 'income': 410 },
{ 'userName': 'Anjali', 'income': 3896 },
{ 'userName': 'Mansi', 'income': 5000 },
{ 'userName': 'Shivani', 'income': 2600 },
];
// applying chain method
var Earning = _.chain(friend).sortBy('income').map(function(jtp) {
return jtp.userName + ' earns ' + jtp.income;
}).value();
console.log(Earning)
输出:
['Gopal earns 410', 'Ayush earns 2600', 'Shivani earns 2600', 'Ankit earns 3200', 'Anjali earns 3896', 'Mansi earns 5000']
解释:
在上述的JavaScript代码中,我们首先使用require关键字导入了Lodash库。然后我们创建了一个对象数组,其中每个索引都有两个字段值:一个是userName,另一个是他们的income,这个值是整数类型。
现在,我们想要按照income的升序打印每个索引的语句。所以,我们在我们的friend对象上使用了_.chain()方法,并且使用了第一个sortBy()方法根据他们的income进行排序。然后我们使用了.map函数来迭代对象,对于每个值,我们打印了一些语句,最后应用了.value()函数。
因此,由于在对象上应用了多个函数,我们使用了_.chain()方法。
示例2
JavaScript代码:
// importing the library
const _ = require('lodash');
// creating an object
var friends = [
{ 'userName': 'Ayush', 'age': 21 },
{ 'userName': 'Ankit', 'age': 23 },
{ 'userName': 'Gopal', 'age': 24 },
{ 'userName': 'Anjali', 'age': 20 },
{ 'userName': 'Mansi', 'age': 22 },
{ 'userName': 'Shivani', 'age': 21 },
];
// applying chain method
var young = _
.chain(friends)
.sortBy('age')
.map(function(friend) {
return friend.userName + ' is ' + friend.age+' year old';
})
.tail()
.value();
//printing the resultant values
console.log(young)
输出:
['Ayush is 21 year old', 'Shivani is 21 year old', 'Mansi is 22 year old', 'Ankit is 23 year old', 'Gopal is 24 year old']
解释:
在上面的JavaScript代码中,我们首先使用require关键字导入了Lodash库。然后我们创建了一个对象数组,每个索引有两个字段值:一个是userName,另一个是其年龄,类型为整数。
我们在对象上应用_.chain()方法,并使用sortBy()方法按照年龄的升序对它们进行排序。现在我们应用.map()函数来获取对象的每个值,并为每个值创建一些语句。然后,我们使用.tail()方法,它将移除数组的第一个元素并返回剩余的值。因此,在移除第一个元素之后,我们应用.value()函数,并将结果数组赋给一个变量。
现在,使用console.log()打印结果数组。我们可以清楚地看到,“Anjali”年龄最小,因此它是排好序的数组中的第一个元素,但我们使用tail()方法将其移除了。
我们使用._chain()方法的原因是,我们在对象上应用了多个函数,如:
sortBy()方法,map()方法,tail()方法和value()方法。