我在Javascript中有一个JSON对象,如下所示:
var myjson={"name":"myname","address":"Myaddress"}
// if my json is not empty:
//do something
我想查找对象是否为空,即是否存在任何键。我怎么能在Javascript中做到这一点?
通过谷歌搜索徒劳搜索,但很难说有什么搜索垃圾(不相关)的信息。
是否有任何官方参考资料(包括删除密钥)?或者我应该与谷歌搜索斗争(对我没有帮助)并希望获得一些相关信息?
答案 0 :(得分:6)
如果你有ECMAScript 5:
Object.keys(myjson).length
将告诉您对象中存在多少(可枚举的)属性。
请参阅https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys,如果您的浏览器本身不支持,您还可以在自己的代码中添加一个版本。
答案 1 :(得分:4)
查找JavaScript对象是否为空的最佳方法是使用Object.keys,它返回对象键的数组(而不是值)。
Object.keys({foo: "bar"}) // returns ["foo"]
Object.keys({}) // returns []
因此,判断对象是否具有键的简单方法是计算该数组的长度:
if(Object.keys(myjson).length) {
// this object has keys!
}
答案 2 :(得分:0)
正如其他答案所述,Object.keys()
应该可以解决问题,但不适用于不支持ECMAScript 5的旧浏览器。这是一个应该跨浏览器工作的快速测试功能:
function isEmpty(o) {
// check all keys in the object
for (var key in o) {
// but don't go up the prototype chain
if (o.hasOwnProperty(key)) {
// if found, stop right away
return false;
}
}
return true;
}
如果你是那种喜欢更严格,更简洁的代码的人,你可以这样写:
function isEmpty(o) {
for (var key in o) if (o.hasOwnProperty(key)) return false;
return true;
}