javascript - 检查对象是否为空

新手上路,请多包涵

我正在尝试创建 javascript/jquery 测试以检查我的对象是否为空并且无法弄清楚。

这是其中包含某些内容的对象:

 {"mergedSellerArray":{"key1114":"1120"}}

这是空的对象:

 {"mergedSellerArray":{}}

这是我根据另一个 SO 答案进行的当前测试,但它不起作用:

 var sellers = JSON.stringify({mergedSellerArray});
if(Object.keys(sellers).length === 0 && sellers.constructor === Object) {
    console.log("sellers is empty!");
}

原文由 dmikester1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 282
2 个回答

您正在测试 sellers 这不是空的,因为它包含 mergedSellerArray 。你需要测试 sellers.mergedSellerArray

 let sellers = {
  "mergedSellerArray": {}
};
if (Object.keys(sellers.mergedSellerArray).length === 0 && sellers.mergedSellerArray.constructor === Object) {
  console.log("sellers is empty!");
} else {
  console.log("sellers is not empty !");
}

原文由 Weedoze 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您使用的是 lodash 库,则可以通过一种优雅的方式来检查空对象、数组、映射或集合。我假设您知道 ES6 Import 语句。

 import {isEmpty} from "lodash"

let obj = {};
console.log(isEmpty(obj)); //Outputs true.

let arr = [];
console.log(isEmpty(arr)); //Outputs true.

obj.name="javascript";
console.log(isEmpty(obj)); //Outputs false.

所以,对于你的代码,

 isEmpty(mergedSellerArray); //will return true if object is not empty.

希望这个答案有所帮助。

原文由 Vasuki Dileep 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题