From 071f1d8875c083d76d47fa601bd515809617a825 Mon Sep 17 00:00:00 2001 From: Wakidur Rahaman Date: Fri, 9 Dec 2022 12:20:35 +0900 Subject: [PATCH 1/2] implement isEquivalent object --- src/problems/is-equivalent-object.ts | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/problems/is-equivalent-object.ts diff --git a/src/problems/is-equivalent-object.ts b/src/problems/is-equivalent-object.ts new file mode 100644 index 0000000..8ad3f12 --- /dev/null +++ b/src/problems/is-equivalent-object.ts @@ -0,0 +1,25 @@ +// implementation of some property-based equality checking where each property of the object is compared. + +function isEquivalentObj(a: { [key: string]: number | string }, b: { [key: string]: number | string }) { + // Arrays of property names. + const aProps = Object.getOwnPropertyNames(a); + const bProps = Object.getOwnPropertyNames(b); + + // If their property lengths are different, they're different objects + if (aProps.length != bProps.length) { + return false; + } + + for (let i = 0; i < aProps.length; i++) { + let propName = aProps[i]; + // If the values of the property are different, not equal + if (a[propName] !== b[propName]) { + return false; + } + } + + // If everything matched, correct + return true; +} + +isEquivalentObj({ hi: 12 }, { hi: 12 }); // Return true. From 556762ba2ff849a5dc521a02643f1f33d46044e8 Mon Sep 17 00:00:00 2001 From: Wakidur Rahaman Date: Fri, 9 Dec 2022 18:40:46 +0900 Subject: [PATCH 2/2] update --- src/problems/is-equivalent-object.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/problems/is-equivalent-object.ts b/src/problems/is-equivalent-object.ts index 8ad3f12..4f9dd7a 100644 --- a/src/problems/is-equivalent-object.ts +++ b/src/problems/is-equivalent-object.ts @@ -21,5 +21,5 @@ function isEquivalentObj(a: { [key: string]: number | string }, b: { [key: strin // If everything matched, correct return true; } - +// However, this would still work for objects that have only a string or a number as the property. isEquivalentObj({ hi: 12 }, { hi: 12 }); // Return true.