0

当使用uniq()underscore.js 中的方法时,我们可以选择函数式方法或 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论点在哪里?

4

1 回答 1

2

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

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

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

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

_.uniq(data, function (obj) {return obj.model});
于 2013-07-28T17:03:21.400 回答