不完全确定您要做什么,但这里有一些信息,我希望可以帮助您解决问题。
比较运算符优先级
运算符的&&优先级高于||,这意味着:
A || B && C || D
相当于:
A || (B && C) || D
不:
(A || B) && (C || D)
日期比较
您可以直接比较Date对象:
// example data
var d1 = new Date('2012-12-12'),
d2 = new Date('2012-12-12'),
d3 = new Date('2013-01-01');
<并通过、>、<=和获得您期望的结果>=:
// logical results
d1 < d3 // true
d1 < d2 // false
d2 > d3 // false
d1 <= d2 // true
d1 => d2 // true
但不是平等比较==:
d1 == d2 // false
// yet...
d1 <= d2 && d1 => d2 // true
结论:要测试一个日期是在另一个日期之前还是之后,直接比较是可以的。但是,为了测试两个日期是否相同,请使用字符串比较:
// is this the same day?
d1.format('Y-m-d') === d2.format('Y-m-d') // true
// is this the same day and hour?
d1.format('Y-m-d H:i:s') === d2.format('Y-m-d H:i:s') // true
Ext.isEmpty()
Ext.isEmpty仅返回true:null和undefined空字符串。''
Ext.isEmpty(null) // true
Ext.isEmpty(undefined) // true
Ext.isEmpty('') // true
Ext.isEmpty(' ') // false
Ext.isEmpty(false) // false
// etc.
这可能有助于解决您的空字段案例:
...
&& (Ext.isEmpty(item.get('prodAddDate') || item.get('prodAddDate') >= dateStartValue)
&& (Ext.isEmpty(item.get('prodAddDate') || item.get('prodAddDate') <= dateEndValue)
最后
对正则表达式的痴迷是什么?它们对于复杂的字符串测试/提取很有用,但仅此而已。你可能应该暂时忘记它们,伙计;p