在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
参数在哪里?
答案 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});