2014-01-29 21 views
1

我有以下陣列:如何在lodash中使用.uniq函數時指定[isSorted = true]?

var tst = 
[ 
{"topicId":1,"subTopicId":1,"topicName":"a","subTopicName":"11"}, 
{"topicId":1,"subTopicId":2,"topicName":"a","subTopicName":"22"}, 
{"topicId":1,"subTopicId":3,"topicName":"a","subTopicName":"33"}, 
{"topicId":2,"subTopicId":x,"topicName":"b","subTopicName":"xx"}, 
{"topicId":3,"subTopicId":y,"topicName":"c","subTopicName":"yy"} 
] 

我想什麼做的是使用_lodash的_.uniq功能

_.uniq(array, [isSorted=false], [callback=identity], [thisArg]) 

創建此:

var t = 
[ 
{"topicId":1,"subTopicId":1,"topicName":"a","subTopicName":"11"}, 
{"topicId":2,"subTopicId":x,"topicName":"b","subTopicName":"xx"}, 
{"topicId":3,"subTopicId":y,"topicName":"c","subTopicName":"yy"} 
] 

我理解我可以用類似下面的方法做到這一點,但我不確定我是否理解這與我在文檔中看到的函數定義相匹配:

var t = _.uniq(tst, 'topicId'); 

但是由於我的數組總是被排序,所以我該如何使用選項[isSorted = true]。 'topicId' 也被認爲是排序的參數?

+0

另外:http://lodash.com/docs#uniq

_.uniq(array, [isSorted=false], [callback=identity], [thisArg]) 

因此,在你的榜樣,你會按如下方式使用它提供的對象將分別用於創建「.pluck」或「.where」樣式的回調。「*看看例子,它就在那裏。 –

回答

3

你有你的問題的答案! 來自:*「每次迭代調用的函數如果屬性名稱或:

var t = _.uniq(tst, true, 'topicId'); 
從有關回調的文檔
+0

令我困惑的是。 .uniq如何知道哪個參數是哪個? – Melina

+2

@Melina:它可能會檢查參數的數據類型。看看源代碼(鏈接到源代碼的文檔):https://github.com/lodash/lodash/blob/2.4.1/dist/lodash.compat.js#L5332 –

+0

正如Felix指出的那樣,它檢查參數的數據類型。 如果它是一個布爾值,它知道你指定了它,否則,它知道你省略了該參數。 – Etai