lodash的.sortedUniq()似乎没有删除重复项。它是如何工作的?

时间:2017-03-25 18:03:53

标签: javascript lodash

鉴于php,(javascript个时间戳数组,稍后会转换为*=1000个时间戳(lodash)),我期待_.sortedUniq(someArr) 小号...

Array.from(new Set(someArr))

删除所有重复的值,得到与

相同的结果
_.uniq()

有人可以解释为什么.sortedUniq()无法删除重复项吗?我也试过allVals。我的假设错了吗?我的数据集有问题吗?

这里是mcve 问题本身是指在我定义php之后,但我已经离开了我构建它的方式,以防万一我的做法有问题那。初始数据集数组来自javascript,目前在结构方面不可协商。

请注意,虽然我在100%进行了一些练习,但我不是"受过教育的" 程序员,我来自一个设计背景并学会了动手编码,所以我并没有排除我对某些编程模式的掌握不是{{1}}准确的可能性。

非常感谢您的全面解释。

2 个答案:

答案 0 :(得分:1)

_.sortedUniq专为已经排序过的数组而设计。您的数组尚未排序。

_.uniq替换它似乎可以删除重复项。 (JSFiddle

如果您知道已经对数组进行了排序,则可以更有效地从数组中删除重复数据。据推测,这就是为什么LoDash包含两种情况的不同功能 - 排序和非排序。

顺便说一句uniqKeys === pointKeys will not correctly check whether the two arrays have the same contents,因为数组是不同的对象,即使它们包含相同的数字。相反,您需要编写function来执行此操作,或使用isEqual

答案 1 :(得分:1)

根据lodash docs(https://lodash.com/docs/4.17.4#sortedUniq)_.sortedUniq用于排序数组,请尝试使用_.uniq()