JavaScript-字典为空
我正在使用Appcelerator,我想知道我的JS字典是否为空 我试过这个: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
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完成!