如何使用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循环的第一次迭代后使用return关键字终止函数。
示例
在下面的示例中,我们创建了两个不同的对象。此外,我们创建了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
}
在上面的语法中,如果education对象为空,则JSON.stringify()方法返回“{}”。
示例
在下面的示例中,我们创建了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行代码才能使用第二种方法。因此,为了提高代码的可读性,最好使用第一种或第三种方法。
数据结构
网络
关系型数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP