Javascript 检查是否未定义始终计算为true
我有以下JavascriptJavascript 检查是否未定义始终计算为true,javascript,Javascript,我有以下Javascript var array = $('#calendar').fullCalendar('clientEvents'); var newArray = []; array.forEach(function(entry) { if (entry.description != undefined) { newArray.push(entry); } }); 我有一个充满对象的数组,其中有些有描述
var array = $('#calendar').fullCalendar('clientEvents');
var newArray = [];
array.forEach(function(entry) {
if (entry.description != undefined) {
newArray.push(entry);
}
});
我有一个充满对象的数组,其中有些有描述,有些没有——我想过滤掉那些没有描述的
我的问题是,无论描述是否未定义,if语句的计算结果始终为true
从屏幕截图中可以看到-entry.description未定义,但它仍将其推送到数组中
我做错了什么
更新
在重新启动firefox:S之后,它似乎可以按预期使用原始代码
我相信这可能是firefox调试器的问题。
无论如何,感谢大家的帮助-如果您有任何需要添加的内容,请随时对实际代码段发表评论,尽管尝试以下内容:
if ( typeof entry.description != "undefined" ) {
//code if not undefined
}
尝试
hasOwnProperty
if(entry.hasOwnProperty("description ")){
//you code
}
很可能什么都没有-您是否有此案例的示例数组?此外,你正在执行一个粗略的代码>数组。原型。过滤器< /代码>用你的代码> NeWraye< /Cult>和<代码>前缀 >只考虑使用它。我必须要问的是:你的全局未定义的变量仍然没有定义吗?):萨乔用什么来代替?undefined是ecmascript.js的一部分-但是是的:)现在似乎可以工作了-我认为这是firefox调试器的问题-没有显示正确的数据我不确定这是否是一个输入错误,但是您发布的代码使用了
==代码>而图像显示=
@VisualBean使用Array.prototype.filter
而不是forEach
并推送到newArray
-例如return Array.filter(函数(条目){return entry.description!==undefined})
。我不认为您的问题与比较有关,这就是为什么我要求提供一个数据样本数组进行试验的原因。