Implement an optimized (20x) version of isEmptyObject()
authorJérôme Benoit <jerome.benoit@sap.com>
Tue, 25 Oct 2022 08:54:03 +0000 (10:54 +0200)
committerJérôme Benoit <jerome.benoit@sap.com>
Tue, 25 Oct 2022 08:54:03 +0000 (10:54 +0200)
Also fix isEmptyString() corner case issues

Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
src/utils/Utils.ts

index d396cfa959f930167978cd35dd240eae08ff29cd..1d422af2fb102ede225366fb4443ac51fb837b2a 100644 (file)
@@ -172,7 +172,7 @@ export default class Utils {
   }
 
   public static isEmptyString(value: unknown): boolean {
-    return Utils.isString(value) && (value as string).length === 0;
+    return Utils.isString(value) && (value as string).trim().length === 0;
   }
 
   public static isUndefined(value: unknown): boolean {
@@ -195,7 +195,15 @@ export default class Utils {
   }
 
   public static isEmptyObject(obj: object): boolean {
-    return !Object.keys(obj).length;
+    if (obj.constructor !== Object) {
+      return false;
+    }
+    // Iterates over the keys of an object, if
+    // any exist, return false.
+    for (const _ in obj) {
+      return false;
+    }
+    return true;
   }
 
   public static insertAt = (str: string, subStr: string, pos: number): string =>