Skip to content

Commit a06fbfb

Browse files
committed
update compare-arrays to validate arrays and support nested arrays
1 parent 24cda3d commit a06fbfb

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

public/consolidated/javascript.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
"equal"
1313
],
1414
"contributors": [],
15-
"code": "const compareArrays = (array1, array2) => {\n if (array1.length !== array2.length) return false;\n\n for (let i = 0; i < array1.length; i++) {\n if (array1[i] !== array2[i]) {\n return false;\n }\n }\n\n return true;\n}\n\n// Usage:\narray1 = [1, 2, 3, 4, 5];\narray2 = [5, 4, 3, 2, 1];\ncompareArrays(array1, array2); // Returns: false\n"
15+
"code": "const compareArrays = (array1, array2) => {\n if (!Array.isArray(array1) || !Array.isArray(array2)) return false;\n if (array1.length !== array2.length) return false;\n\n const traverse = (arr1, arr2) => {\n for (let i = 0; i < arr1.length; i++) {\n if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) {\n if (!traverse(arr1[i], arr2[i])) return false;\n } else if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n\n return true;\n }\n\n return traverse(array1, array2);\n}\n\n// Usage:\nconst number = 123;\nconst array1 = [1, 2, 3, 4, 5];\nconst array2 = [1, 2, 3, 4, 5];\nconst array3 = [[1, 2], [3, 4]];\nconst array4 = [[1, 2], [3, 4]];\n\ncompareArrays(array1, array2); // Returns: true\ncompareArrays(array1, number); // Returns: false\ncompareArrays(array1, array4); // Returns: false\ncompareArrays(array3, array4); // Returns: true\n"
1616
},
1717
{
1818
"title": "Partition Array",

snippets/javascript/array-manipulation/compare-arrays.md

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,33 @@ tags: array,compare,equal
77

88
```js
99
const compareArrays = (array1, array2) => {
10+
if (!Array.isArray(array1) || !Array.isArray(array2)) return false;
1011
if (array1.length !== array2.length) return false;
1112

12-
for (let i = 0; i < array1.length; i++) {
13-
if (array1[i] !== array2[i]) {
14-
return false;
13+
const traverse = (arr1, arr2) => {
14+
for (let i = 0; i < arr1.length; i++) {
15+
if (Array.isArray(arr1[i]) && Array.isArray(arr2[i])) {
16+
if (!traverse(arr1[i], arr2[i])) return false;
17+
} else if (arr1[i] !== arr2[i]) {
18+
return false;
19+
}
1520
}
21+
22+
return true;
1623
}
1724

18-
return true;
25+
return traverse(array1, array2);
1926
}
2027

2128
// Usage:
22-
array1 = [1, 2, 3, 4, 5];
23-
array2 = [5, 4, 3, 2, 1];
24-
compareArrays(array1, array2); // Returns: false
29+
const number = 123;
30+
const array1 = [1, 2, 3, 4, 5];
31+
const array2 = [1, 2, 3, 4, 5];
32+
const array3 = [[1, 2], [3, 4]];
33+
const array4 = [[1, 2], [3, 4]];
34+
35+
compareArrays(array1, array2); // Returns: true
36+
compareArrays(array1, number); // Returns: false
37+
compareArrays(array1, array4); // Returns: false
38+
compareArrays(array3, array4); // Returns: true
2539
```

0 commit comments

Comments
 (0)