JavaScript 如何检查对象是否为空

JavaScript 如何检查对象是否为空

在JavaScript中,对象是最重要的数据类型,我们在使用JavaScript框架开发应用程序时经常需要使用它。有时,我们需要检查对象是否为空,并根据对象的值执行操作。

例如,当您从数据库获取数据时,如果找不到数据,您可能会得到一个空对象。当您在空对象上执行某些操作或执行某些方法时,程序会引发错误。因此,最好首先检查对象是否为空。

我们将学习三种使用JavaScript检查对象是否为空的方法。

使用Object.keys()方法

我们可以使用 Object.keys() 方法将对象的键放入单个数组中。然后,我们可以使用数组的length属性检查数组的长度。如果键的数组长度为0,那么表示对象不包含任何键,对象为空。

语法

用户可以按照下面的语法使用Object.keys()方法来检查对象是否为空。

let obj1Len = Object.keys(obj1).length;
if (obj1Len == 0) {

   // object is empty
} else {

   // object is not empty
} 

在上述语法中,Object.keys()返回obj1的所有键的数组,并且我们使用length属性来获取其长度。使用上述语法,我们可以使用Object.keys()方法来获取所有键的数组,并且还可以使用length属性来检查数组的长度。

示例

在下面的示例中,我们创建了两个不同的对象。obj1包含一些属性,而obj2是空的,不包含任何属性。

之后,我们使用Object.keys()方法对两个对象进行处理,以获取一个包含键的数组并检查数组的长度,以确保对象是空的或至少包含一个属性。

<html>
<body>
   <h3>Using the<i> object.keys() </i>method to check whether the object contains some value or not</h3>
   <p id = "output"> </p>
   <script>
      let output = document.getElementById("output");
      let obj1 = {
         prop1: 10,
         prop2: "Hi",
      };
      let obj2 = {};

      // get the array of all keys using the Object.keys() method,

      // check the length of the array using the length property
      let obj1Len = Object.keys(obj1).length;
      if (obj1Len != 0) {
         output.innerHTML += "The value of obj1 is " + JSON.stringify(obj1) + "</br>";
      } else {
         output.innerHTML += "The obj1 object is empty! </br>";
      }
      let obj2Len = Object.keys(obj2).length;
      if (obj2Len != 0) {
         output.innerHTML += "The value of obj1 is " + obj2 + "</br>";
      } else {
         output.innerHTML += "The obj2 object is empty! </br>"; 
      }
   </script>
</body>
</html>

使用for-in循环

for-in循环可以让我们遍历对象的键。我们可以使用for-in循环遍历对象的每个键。在这里,我们将使用for-in循环,并检查它是否对对象进行了单次迭代,对象至少包含一个属性且不为空。

语法

用户可以按照以下语法使用for-in循环来检查对象是否为空。

function isObjectEmpty(object) {
   for (ele in object) {

      // object is not empty
      return;
   }

   // if control comes here, the object is empty
}

在上述语法中,如果for循环的单次迭代发生,那就意味着我们确保了对象至少包含一个属性。因此,在第一次for-in循环迭代之后,我们使用返回关键字终止函数。

示例

在下面的示例中,我们创建了两个不同的对象。同时,我们创建了isObjectEmpty()函数,根据对象是否为空打印不同的消息。

我们对两个不同的对象分别调用了isObjectEmpty()函数,用户可以观察其输出。

<html>
<body>
   <h3>Using the <i>for-in loop</i> to check whether the object contains some value.</h3>
   <p id="output"></p>
   <script>
      let output = document.getElementById("output");

      // creating the objects
      let obj1 = {
         prop1: false,
      };
      let obj2 = {};

      // creating a function to check object is empty or not
      function isObjectEmpty(object) {
         for (ele in object) {

            // if any single iteration occurs using a for-in loop, it means the object contains at least one property
            output.innerHTML += "The object " + JSON.stringify(object) + " is not empty! </br>";
            return;
         }
         output.innerHTML += "The object " + JSON.stringify(object) + " is empty! </br>";
      }

      // calling the isObjectEmpty() function by passing different objects as an argument
      isObjectEmpty(obj1);
      isObjectEmpty(obj2);
   </script> 
</body>
</html>

使用JSON.stringify()方法

JSON.stringify()方法可以将任何值转换为我们作为参数传递给该方法的字符串。空对象的语法类似于{},而stringify()方法总是返回空对象的“{}”。

因此,我们可以将stringify()方法的返回值与“{}”进行比较,并确保对象是否为空。

语法

用户可以按照下面的语法来使用JSON.stringify()方法来检查对象是否为空。

if(JSON.stringify(education) == "{}") {

   // object is empty
} else {

   // object is not empty
}

在上面的语法中, JSON.stringify() 方法会在 education 对象为空时返回“{}”。

示例

在下面的示例中,我们创建了一个包含一些属性的 education 对象。因此, JSON.stringify() 方法将不会返回‘{}’,而是返回 education 对象的字符串值。因此,用户可以观察到输出显示 education 对象不为空。

<html>
<body> 
   <h3> Using the<i> JSON.stringify() method </i> to check whether object contains some value or not.</h3>
   <p id="output"></p>
   <script>
      let output = document.getElementById("output");

      // creating the objects
      let education = {
         totalYears: 12,
         school: "Online",
      };

      // convert object to string,

      // if object is empty, the JSON.stringify() method will return "{}"
      if (JSON.stringify(education) == "{}") {
         output.innerHTML += "Object is empty!";
      } else {
         output.innerHTML += "Education object is not empty!";
      }
   </script>
</body>
</html>

我们学习了三种方法来检查对象是否为空。第一种和第三种方法只有一行代码;用户需要编写3到4行代码来使用第二种方法。因此,为了更好的代码可读性,最好使用第一种和第三种方法中的任一种。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程