测试等于条件时使用下划线时的奇怪行为
strange behavior when using Underscore when testing equals condition
我在我的项目中使用 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);
请让我知道哪里出错了。 Link 附加到 Jsfiddle:Jsfiddle
第一个测试 — obj.changes_summary
— 当 属性 值为 0
时将失败,因为这是一个虚假值。如果您正在测试对象中是否存在 属性,您可以这样做:
return (("changes_summary" in obj) && obj.changes_summary === 0);
我在我的项目中使用 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);
请让我知道哪里出错了。 Link 附加到 Jsfiddle:Jsfiddle
第一个测试 — obj.changes_summary
— 当 属性 值为 0
时将失败,因为这是一个虚假值。如果您正在测试对象中是否存在 属性,您可以这样做:
return (("changes_summary" in obj) && obj.changes_summary === 0);