我在我的项目中使用Underscore.js并遇到了一种奇怪的行为。当我使用changes_summary === 2
过滤数组时,我得到了所需的结果,但当我使用changes_summay === 0
时,我没有得到任何输出。
以下是代码:
var result={
"data": [
{
"id": 956,
"changes_summary": 2,
"name": "Pradeep",
"age": 32
},
{
"id": 956,
"changes_summary": 0,
"name": "praveen",
"age": 22
}
]
}
var filtered = _.filter(result.data, function(obj){
return (obj.changes_summary && obj.changes_summary === 2)
});
//working when comparing with changes_summary with 2 but not working when comparing with 0
console.log(filtered);
请让我知道我哪里出错了。链接到Jsfiddle附件:Jsfiddle
答案 0 :(得分:1)
第一个测试 - obj.changes_summary
- 在属性值为0
时将失败,因为这是一个假值。如果您正在测试以查看对象中是否存在该属性,则可以执行以下操作:
return (("changes_summary" in obj) && obj.changes_summary === 0);