Compare two arrays regardless of order
Compare the sorted sets of distinct values.
function isEqualIgnoringOrder({ a, b }) { const normalize = values => JSON.stringify([...new Set(values)].sort()); return normalize(a) === normalize(b); }
Input & expected output
Input
{
"a": [
"[email protected]",
"[email protected]"
],
"b": [
"[email protected]",
"[email protected]"
]
}Expected output
trueThe edge case
Input
{
"a": [
1,
1,
2
],
"b": [
2,
1
]
}Expected output
trueKnow the limits
- Duplicates are ignored, as the edge case shows; compare counts when multiplicity matters.
- Default sort converts to strings: 10 sorts before 9, which is fine for equality.
The function above is the implementation used by the lab. The lab validates JSON types and caps size before execution; include equivalent validation when accepting untrusted input in your application.
Source & maintenance
Based on Compare two arrays regardless of order from the original 1loc collection by Nguyen Huu Phuoc, with robinpokorny, dauom, elkarouani. Copyright (c) 2020 phuoc-ng. MIT licensed.
Curated implementation; explicit input contract, edge case and limits. Original MDX retained as inert source evidence.
Maintained by Oveyon. Source commit: 14b481cf60df. Read the license.
Keep exploring
- Clone an array — Create a new array without copying the objects inside it.
- Remove duplicate values — Keep the first occurrence of each value, in its original order.
- Flatten a nested array — Turn a nested array into one sequence of values.