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行代码来使用第二种方法。因此,为了更好的代码可读性,最好使用第一种和第三种方法中的任一种。