_.chain()中的方法参数

时间:2013-07-28 16:55:30

标签: javascript underscore.js

在underscore.js中使用uniq()方法时,我们可以选择功能方法或OO方法。通常,uniq()接受一个数组,一个isSorted布尔值和一个iterator函数。布尔值用于表示数组是否已经排序。您可以对数组进行排序,然后传入true以获得更好的性能(显然)。

它可能看起来像这样:

var data = [
    {'make':'Porsche','model':'911'},
    {'make':'Porsche','model':'986'},
    {'make':'Porsche','model':'986'}
];

var results = _.uniq(data, true, function (obj) {return obj.model});

然而,对于链式版本,我必须做这样的事情:

var results = _.chain(data)
    .uniq(function (obj) {return obj.model})
    .value();

那么,在链式版本中,isSorted参数在哪里?

1 个答案:

答案 0 :(得分:2)

链接版本将应用相同的函数,仅由包装值补充,因此它采用相同的参数。相当于

_.uniq(data, true, function (obj) {return obj.model});

_(data).uniq(true, function (obj) {return obj.model});

并且没有true的调用(isSorted参数是可选的,您可以将iterator映射器作为第二个参数)等同于

_.uniq(data, function (obj) {return obj.model});