Javascript 在lodash中使用.uniq函数时,如何指定[isSorted=true]?
我有以下数组:Javascript 在lodash中使用.uniq函数时,如何指定[isSorted=true]?,javascript,lodash,Javascript,Lodash,我有以下数组: 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
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的u.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”
作为排序依据的参数?您的问题中有答案! 发件人: 因此,在您的示例中,您将按如下方式使用它:
var t = _.uniq(tst, true, 'topicId');
同样来自关于回调的文档:“每次迭代调用的函数。如果提供了属性名或对象,它将分别用于创建“.pull”或“.where”样式回调。看看这些示例,它们都在那里。让我困惑的是。uniq如何知道哪个参数是哪个?@Melina:它可能会检查参数的数据类型。看看源代码(docs链接到源代码):正如Felix所指出的,它检查参数的数据类型。如果它是布尔值,它知道您指定了它,否则,它知道您忽略了那个参数。
var t = _.uniq(tst, true, 'topicId');