@ffsm/utils
Version:
A collection of utility functions for React and JavaScript, providing type-safe utilities for common tasks like prop management, conditional rendering, and more.
59 lines (58 loc) • 1.28 kB
JavaScript
export function isEqualArray(a, b) {
if (a === null) {
return b === null;
}
if (a.length !== b.length) {
return false;
}
if (a.length === 0) {
return true;
}
for (let i = 0; i < a.length; i++) {
const valueA = a[i];
const valueB = b[i];
if (!isEqual(valueA, valueB)) {
return false;
}
}
return true;
}
export function isEqualObject(a, b) {
if (a === null) {
return b === null;
}
if (Array.isArray(a)) {
if (Array.isArray(b)) {
return isEqualArray(a, b);
}
return false;
}
const keyA = Object.keys(a);
const keyB = Object.keys(b);
if (keyA.length !== keyB.length) {
return false;
}
if (keyA.length === 0) {
return true;
}
for (const key of keyA) {
if (!keyB.includes(key)) {
return false;
}
const valueA = a[key];
const valueB = b[key];
if (!isEqual(valueA, valueB)) {
return false;
}
}
return true;
}
export function isEqual(a, b) {
if (typeof a !== typeof b) {
return false;
}
if (typeof a === 'object') {
return isEqualObject(a, b);
}
return a === b;
}