just icon indicating copy to clipboard operation
just copied to clipboard

just-intersect is mixing array and strings

Open Nikaple opened this issue 6 months ago • 3 comments

const intersect = require('just-intersect')

intersect([1, "2", 5, 6], [2, 3, 5, 6]); // ["2", 5, 6]

lodash.intersection gives [5, 6] on such cases.

Nikaple avatar Jan 03 '24 11:01 Nikaple

Looks like the issue is that the current implementation creates objects where the items of the arrays are the properties, which causes the behavior you explained since items are casted to strings (https://github.com/angus-c/just/blob/master/packages/array-intersect/index.mjs#L35); e.g. [2, 3, 5, 6] becomes { '2': true, '3': true, '5': true, '6': true }, so then checking if "2" is a property of that object results in that issue.

uncenter avatar Jan 03 '24 12:01 uncenter

Yeah, there's some workaround and I'm using a set-based method which is O(n). Just curious if the library author is willing to fix this, as it's a breaking change.

Nikaple avatar Jan 03 '24 12:01 Nikaple

The author hasn't been active since last May unfortunately. I'm also eagerly awaiting their return ahah.

uncenter avatar Jan 03 '24 13:01 uncenter