javascript - lodash's .sortedUniq() doesn't seem to remove duplicates. How does it work? - Stack Overflow

Given someArr, (an array of php timestamps, which will later be converted to javascript timestamps (*=1

Given someArr, (an array of php timestamps, which will later be converted to javascript timestamps (*=1000)), I was expecting lodashs...

_.sortedUniq(someArr)

to remove all duplicate values, giving the same result as

Array.from(new Set(someArr))

Could anyone explain why .sortedUniq() doesn't remove duplicates? I also tried _.uniq(), for that matter. Is my assumption wrong? Is there something wrong with my dataset?

Here's the mcve.
The question itself refers to after I define allVals, but I've left the way I'm constructing it in, just in case there's something wrong with how I'm doing that. The initial dataset array is what's ing from php and, for the time being, is not negotiable in terms of structure.

Please note that, while I do have a bit of exercise in javascript, I'm not a "schooled" programmer, I e from a design background and learned to code hands-on, so I'm not excluding the possibility that my grasp of certain programming patterns is not 100% accurate.

Thorough explanations are highly appreciated.

Given someArr, (an array of php timestamps, which will later be converted to javascript timestamps (*=1000)), I was expecting lodashs...

_.sortedUniq(someArr)

to remove all duplicate values, giving the same result as

Array.from(new Set(someArr))

Could anyone explain why .sortedUniq() doesn't remove duplicates? I also tried _.uniq(), for that matter. Is my assumption wrong? Is there something wrong with my dataset?

Here's the mcve.
The question itself refers to after I define allVals, but I've left the way I'm constructing it in, just in case there's something wrong with how I'm doing that. The initial dataset array is what's ing from php and, for the time being, is not negotiable in terms of structure.

Please note that, while I do have a bit of exercise in javascript, I'm not a "schooled" programmer, I e from a design background and learned to code hands-on, so I'm not excluding the possibility that my grasp of certain programming patterns is not 100% accurate.

Thorough explanations are highly appreciated.

Share Improve this question edited Mar 25, 2017 at 18:11 tao asked Mar 25, 2017 at 18:03 taotao 90.5k17 gold badges133 silver badges173 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 6

_.sortedUniq is designed for an array that's already been sorted. Your array has not been sorted.

Replacing it with _.uniq seems to work in removing the duplicates. (JSFiddle)

It is possible to remove duplicates from an array more efficiently if you know it has already been sorted. That, presumably, is why LoDash includes different functions for the two cases - sorted and non-sorted.

By the way uniqKeys === pointKeys will not correctly check whether the two arrays have the same contents, as the arrays are distinct objects even if they contain the same numbers. Instead you need to write a function to do this, or use isEqual.

According to lodash docs (https://lodash./docs/4.17.4#sortedUniq) _.sortedUniq is for sorted arrays, try using _.uniq()

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744228874a4564144.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信