鉴于php
,(javascript
个时间戳数组,稍后会转换为*=1000
个时间戳(lodash
)),我期待_.sortedUniq(someArr)
小号...
Array.from(new Set(someArr))
删除所有重复的值,得到与
相同的结果_.uniq()
有人可以解释为什么.sortedUniq()
无法删除重复项吗?我也试过allVals
。我的假设错了吗?我的数据集有问题吗?
这里是mcve
问题本身是指在我定义php
之后,但我已经离开了我构建它的方式,以防万一我的做法有问题那。初始数据集数组来自javascript
,目前在结构方面不可协商。
请注意,虽然我在100%
进行了一些练习,但我不是"受过教育的" 程序员,我来自一个设计背景并学会了动手编码,所以我并没有排除我对某些编程模式的掌握不是{{1}}准确的可能性。
非常感谢您的全面解释。
答案 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()