5种判断数组为空的方法

3 阅读1分钟
     function isEmpty1(obj) {
        return JSON.stringify(obj) === "{}";
      }
     function isEmpty2(obj) {
        return Object.getOwnPropertyNames(obj).length === 0;
      }
      function isEmpty3(obj) {
        return Object.keys(obj).length === 0;
      }
     function isEmpty4(obj) {
        for (let key in obj) {
          if (key) return false;
        }
        return true;
      }
     function isEmpty5(obj) {
        return Reflect.ownKeys(obj).length === 0;
      }
      const obj = { name: 1 };
      console.log("1  isEmpty:", isEmpty1(obj)); //false
      console.log("2  isEmpty:", isEmpty2(obj)); //false
      console.log("3  isEmpty:", isEmpty3(obj)); //false
      console.log("4  isEmpty:", isEmpty4(obj)); //false
      console.log("5  isEmpty:", isEmpty5(obj)); //false
      const obj2 = {};
      console.log("1  isEmpty:", isEmpty1(obj2)); //true
      console.log("2  isEmpty:", isEmpty2(obj2)); //true
      console.log("3  isEmpty:", isEmpty3(obj2)); //true
      console.log("4  isEmpty:", isEmpty4(obj2)); //true
      console.log("5  isEmpty:", isEmpty5(obj2)); //true

      
      const symbolKey = Symbol("name");
      const obj3 = { [symbolKey]: 1 };
      console.log("1  isEmpty:", isEmpty1(obj3)); //true
      console.log("2  isEmpty:", isEmpty2(obj3)); //true
      console.log("3  isEmpty:", isEmpty3(obj3)); //true
      console.log("4  isEmpty:", isEmpty4(obj3)); //true
      console.log("5  isEmpty:", isEmpty5(obj3)); //false

总结

最好用的还是Reflect.ownKeys(),比较全面,能检测Symbol类型的key