不完全确定您要做什么,但这里有一些信息,我希望可以帮助您解决问题。
比较运算符优先级
运算符的&&
优先级高于||
,这意味着:
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