fewer unnecessary re-renders
This commit is contained in:
parent
4f9a546fd1
commit
0fac3977b3
2 changed files with 95 additions and 34 deletions
|
|
@ -38,3 +38,31 @@ export function arraysEqual<T>(a: T[], b: T[], cmp: (a: T, b: T) => boolean = (a
|
|||
|
||||
return true;
|
||||
}
|
||||
|
||||
export function setsEqual<T>(a: Set<T>, b: Set<T>): boolean {
|
||||
if (a === b)
|
||||
return true;
|
||||
|
||||
if (a.size !== b.size)
|
||||
return false;
|
||||
|
||||
for (const itemA of a)
|
||||
if (!b.has(itemA))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
export function objectsEqual<T>(a: {[key: string]: T}, b: {[key: string]: T}, cmp: (a: T, b: T) => boolean = (a,b)=>a===b): boolean {
|
||||
if (a === b)
|
||||
return true;
|
||||
|
||||
if (Object.keys(a).length !== Object.keys(b).length)
|
||||
return false;
|
||||
|
||||
for (const [keyA, valueA] of Object.entries(a))
|
||||
if (!cmp(b[keyA], valueA))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue