在对一个对象(包括数组)进行一组操作处理的时候,我们经常会使用如下的情境进行处理
var fruits_1 = ["apples", "pears", "oranges", "grapes", "bananas"],
fruits_2 = ["plums", "kiwis", "oranges", "bananas", "apples"],
fruits;
fruits = _.union(fruits_1, fruits_2);
fruits = _.without(fruits, 'kiwis');
fruits = _.sortBy(fruits);
虽然这样也没什么问题。不过如果能够写成链式调用,那就舒服多了(原谅强迫症 (:зゝ∠)
强大的 Underscore 为我们提供了一个包装函数 _.chain()
,关于该方法,Underscore 文档是如此描述的:
chain
_.chain(obj)
返回一个包装对象。在对该对象在调用value()
方法之前,调用其他方法会继续返回该包装对象。
比如上面那个水果的示例可以变成如下的样纸。
var fruits_1 = ["apples", "pears", "oranges", "grapes", "bananas"],
fruits_2 = ["plums", "kiwis", "oranges", "bananas", "apples"];
var fruits = _.chain(fruits_1).union(fruits_2).without('kiwis').sortBy().value();
返回的结果都是 ["apples", "bananas", "grapes", "oranges", "pears", "plums"]
的说。