JavaScript-字典为空

JavaScript-字典为空,javascript,dictionary,appcelerator,appcelerator-titanium,Javascript,Dictionary,Appcelerator,Appcelerator Titanium,我正在使用Appcelerator,我想知道我的JS字典是否为空 我试过这个: var options = {}; // Option 1 Object.keys(options).length 1 //Option 2 isEmpty(options) false function isEmpty(ob){ for(var i in ob){ if(ob.hasOwnProperty(i)){return false;}} return true; } //Op

我正在使用Appcelerator,我想知道我的JS字典是否为空

我试过这个:

var options = {};

// Option 1
Object.keys(options).length
1

//Option 2
isEmpty(options)
false

function isEmpty(ob){
      for(var i in ob){ if(ob.hasOwnProperty(i)){return false;}}
      return true;
}

//Option 3
JSON.stringify(options) === '{}'
false

最后我发现了问题:我添加了一个值为“undefined”的键,而
JSON.stringify()
函数没有显示该键

因此,这个函数
Object.keys(options).length
非常有效

对于值为“undefined”的键,请使用此函数检查此项。键(选项)因为
JSON。stringify
返回空字典
{}

var dict = {
   cat: undefined
}

Ti.API.debug("Dict: " + JSON.stringify(dict)) >  Dict: {}
Ti.API.debug("Keys: " + Object.keys(options).length) > Keys: 1
Ti.API.debug("Keys str: " + Object.keys(options)) > Keys: cat

var dict = {}

Ti.API.debug("Dict: " + JSON.stringify(dict)) >  Dict: {}
Ti.API.debug("Keys: " + Object.keys(options).length) > Keys: 0
Ti.API.debug("Keys str: " + Object.keys(options)) > Keys:

最后我发现了问题:我添加了一个值为“undefined”的键,而
JSON.stringify()
函数没有显示该键

因此,这个函数
Object.keys(options).length
非常有效

对于值为“undefined”的键,请使用此函数检查此项。键(选项)因为
JSON。stringify
返回空字典
{}

var dict = {
   cat: undefined
}

Ti.API.debug("Dict: " + JSON.stringify(dict)) >  Dict: {}
Ti.API.debug("Keys: " + Object.keys(options).length) > Keys: 1
Ti.API.debug("Keys str: " + Object.keys(options)) > Keys: cat

var dict = {}

Ti.API.debug("Dict: " + JSON.stringify(dict)) >  Dict: {}
Ti.API.debug("Keys: " + Object.keys(options).length) > Keys: 0
Ti.API.debug("Keys str: " + Object.keys(options)) > Keys:

console.log.log(选项)
向您展示了什么?第一个选项是告诉你有一个属性,那么它是什么?记录下来看看。我不知道为什么会显示一个属性。控制台显示:options={}但是键是什么?记录Object.keys(options),而不是.length,这样我们就可以看到第一个键是什么。该属性(无论它是什么)是否有一个设置为未定义或函数的值?JSON将忽略其中任何一个。stringify,谢谢,你说得对。我有一个值未定义的键。@FokkeZandbergen完成!
console.log.log(选项)
向您展示了什么?第一个选项是告诉你有一个属性,那么它是什么?记录下来看看。我不知道为什么会显示一个属性。控制台显示:options={}但是键是什么?记录Object.keys(options),而不是.length,这样我们就可以看到第一个键是什么。该属性(无论它是什么)是否有一个设置为未定义或函数的值?JSON将忽略其中任何一个。stringify,谢谢,你说得对。我有一个值未定义的键。@FokkeZandbergen完成!