首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在 JavaScript 中检查对象是否为空 – JS Java isEmpty 等效项

如何在 JavaScript 中检查对象是否为空 – JS Java isEmpty 等效项

对象是编程中最常用的数据类型之一。对象是存储为键值对的相关数据的集合。例如:

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14,

}

使用对象时,您可能需要在执行函数之前检查对象是否为空。

在 JavaScript 中,有多种方法可以检查对象是否为空。在本文中,您将了解执行此操作的各种方法、可以附加的选项以及原因。

注意:当一个对象没有键值对时,该对象被认为是空的。

如果您很着急,这里有一个基本示例:

const myEmptyObj = {};

// Works best with new browsers

Object.keys(myEmptyObj).length === 0 && myEmptyObj.constructor === Object

// Works with all browsers

_.isEmpty(myEmptyObj)

两种方法都会返回true. 现在让我们了解这些以及更多可用于检查 JavaScript 中对象是否为空的选项。

如何检查对象是否为空Object.keys()

该Object.keys()方法是 ECMAScript6 (ES6) 中引入的静态对象方法,所有现代浏览器都支持。此方法返回一个包含对象键的数组。例如:

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

console.log(Object.keys(userDetails)); // ["name","username","age"]

这样,您现在就可以应用该.length属性了。如果它返回零 (0),则该对象为空。

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

console.log(Object.keys(userDetails).length); // 3

console.log(Object.keys(myEmptyObj).length); // 0

现在,您可以使用此方法通过 if 语句检查对象是否为空,或创建一个进行检查的函数。

const isObjectEmpty = (objectName) => {

return Object.keys(objectName).length === 0

}

这将返回true或false。如果对象为空,则返回true,否则返回false。

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

const isObjectEmpty = (objectName) => {

return Object.keys(objectName).length === 0

}

console.log(isObjectEmpty(userDetails)); // false

console.log(isObjectEmpty(myEmptyObj)); // true

注意:在检查对象是否为空或任何数据类型时,单独检查长度并不是最佳选择。最好始终确认数据类型是否正确。

为此,您可以使用构造函数检查:

const isObjectEmpty = (objectName) => {

return Object.keys(objectName).length === 0 && objectName.constructor === Object;

}

这样,您就可以得到更彻底的检查。

到目前为止,一切都很顺利。但您可能还希望避免TypeError在传递变量undefined或值null而不是 时抛出 a{}。要解决此问题,您可以添加额外的检查:

const isObjectEmpty = (objectName) => {

return (

objectName &&

Object.keys(objectName).length === 0 &&

objectName.constructor === Object

);

};

在上面的代码中,添加了额外的检查。这意味着如果它不是空对象,它将返回nullorundefined,如下例所示:

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

let nullObj = null;

let undefinedObj;

const isObjectEmpty = (objectName) => {

return (

objectName &&

Object.keys(objectName).length === 0 &&

objectName.constructor === Object

);

};

console.log(isObjectEmpty(userDetails)); // false

console.log(isObjectEmpty(myEmptyObj)); // true

console.log(isObjectEmpty(undefinedObj)); // undefined

console.log(isObjectEmpty(nullObj)); // null

注意:这适用于其他对象静态方法,这意味着您可以使用Object.entries()或Object.values()代替Object.keys()。

for…in如何使用循环检查对象是否为空

您可以使用的另一种方法是 ES6for…in循环。您可以将此循环与该hasOwnProperty()方法一起使用。

const isObjectEmpty = (objectName) => {

for (let prop in objectName) {

if (objectName.hasOwnProperty(prop)) {

return false;

}

}

return true;

};

上面的方法将循环遍历每个对象属性。如果找到单个迭代,则该对象不为空。此外,hasOwnProperty()将返回一个布尔值,指示该对象是否具有指定的属性作为其属性。

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

const isObjectEmpty = (objectName) => {

for (let prop in objectName) {

if (objectName.hasOwnProperty(prop)) {

return false;

}

}

return true;

};

console.log(isObjectEmpty(userDetails)); // false

console.log(isObjectEmpty(myEmptyObj)); // true

如何检查对象是否为空JSON.stringify()

您还可以使用该JSON.stingify()方法,该方法用于将 JavaScript 值转换为 JSON 字符串。这意味着它将把你的对象值转换为对象的字符串。例如:

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

console.log(JSON.stringify(userDetails));

Output:

"{'name':'John Doe','username':'jonnydoe','age':14}"

这意味着当它是一个空对象时,它将返回"{}"。您可以利用它来检查空对象。

const isObjectEmpty = (objectName) => {

return JSON.stringify(objectName) === "{}";

};

true如果对象为空,则返回false:

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

const isObjectEmpty = (objectName) => {

return JSON.stringify(objectName) === "{}";

};

console.log(isObjectEmpty(userDetails)); // false

console.log(isObjectEmpty(myEmptyObj)); // true

如何使用 Lodash 检查对象是否为空

最后,我在这里解释的一些方法可能适用于较旧的浏览器版本,而其他方法可能不起作用。如果您担心一个同时适用于旧版和现代浏览器版本的解决方案,您可以使用Lodash。

Lodash 是一个现代 JavaScript 实用程序库,可以使用非常基本的语法执行许多 JavaScript 功能。

例如,如果你想检查一个对象是否为空,你只需要使用“isEmpty”方法。

_.isEmpty(objectName);

将 Lodash 安装到您的项目中非常简单。您所要做的就是使用这个命令:

$ npm install lodash

您现在可以初始化下划线方法并使用该方法。

const _ = require('lodash');

let userDetails = {

name: "John Doe",

username: "jonnydoe",

age: 14

};

let myEmptyObj = {};

const isObjectEmpty = (objectName) => {

return _.isEmpty(objectName);

};

console.log(isObjectEmpty(userDetails)); // false

console.log(isObjectEmpty(myEmptyObj)); // true

就是这样!

我很喜欢探索检查对象是否为空的各种方法。请随意使用适合您的项目或任务的最佳方法。

祝你编码愉快!感谢关注 ~

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OU1taTBCm1xiXnI_naF8pBWQ0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券