Skip to content

Commit 40c29cb

Browse files
authored
Merge pull request #205 from KCSquid/compare-arrays
add snippet to compare two javascript arrays for equality
2 parents 571c139 + 6d19464 commit 40c29cb

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
---
2+
title: Compare Arrays
3+
description: Deeply compares two arrays to check if they are equal to each other (supports nested arrays and objects).
4+
author: KCSquid
5+
tags: array,object,compare,equal
6+
---
7+
8+
```js
9+
const compareArrays = (a, b) => {
10+
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
11+
return a.every((v, i) =>
12+
Array.isArray(v) && Array.isArray(b[i]) ? compareArrays(v, b[i]) :
13+
typeof v === "object" && typeof b[i] === "object" ? compareObjects(v, b[i]) :
14+
v === b[i]
15+
);
16+
};
17+
18+
const compareObjects = (a, b) => {
19+
if (typeof a !== "object" || typeof b !== "object" || Object.keys(a).length !== Object.keys(b).length) return false;
20+
return Object.keys(a).every(k =>
21+
Array.isArray(a[k]) && Array.isArray(b[k]) ? compareArrays(a[k], b[k]) :
22+
typeof a[k] === "object" && typeof b[k] === "object" ? compareObjects(a[k], b[k]) :
23+
a[k] === b[k]
24+
);
25+
};
26+
27+
// Usage:
28+
compareArrays([1, 2, 3], [1, 2, 3]); // Returns: true
29+
compareArrays([1, 2, 3], [3, 2, 1]); // Returns: false
30+
compareArrays([{a:1}], [{a:1}]); // Returns: true
31+
compareArrays([{a:1}], null); // Returns: false
32+
```

0 commit comments

Comments
 (0)