uniq()
函數的文檔提到,如果對列表進行排序,它的運行速度會快得多。同樣使用鏈接調用可以提高可讀性。所以,你可以這樣做:
_.chain(c1).union(c2).sortBy("a").uniq(true, function(item){ return item.a; }).value();
或者,如果你喜歡奔放的版本(這是更短的11個字符,但不易閱讀):
_.uniq(_.sortBy(_.union(c1,c2),"a"),true, function(item){ return item.a; });
的文檔和uniq()
例子不說清楚如何回調函數起作用。 uniq()
函數的算法在來自兩個列表的每個元素上調用此函數。如果此函數的結果相同,則刪除該元素(假定它是重複的)。
union()
實際上可以防止在數組上調用重複項。我們可以利用這一點太:
_.map(_.union(_.pluck(c1,"a"),_.pluck(c2,"a")),function (item) {return {a:item};});
上述像第一個將對象轉換爲簡單數組(pluck()
)的列表,然後將它們組合使用union()
並最終使用map()
使對象的列表。
參考:uniq()
是兩個數組中的元素是否基於'a'的值排序? – AlexStack
@AlexStack不幸的是,但我明白你來自哪裏。 – user1514042