以下是带有datepicker类的输入字段:
<input type="text" class="datepicker" value="" />
<input type="text" class="datepicker" value="" />
<input type="text" class="datepicker" value="2011-02-15" />
<input type="text" class="datepicker" value="2011-02-16" />
Run Code Online (Sandbox Code Playgroud)
我需要创建一个日期数组,排除空白值并返回最大值.以下代码似乎不会排除空值:
var datelist = [];
$(".datepicker").each(function(i) {
if (this.value!="") {datelist[i] = this.value;}
});
datelist.sort();
datelist.reverse();
alert(datelist); //,,2011-02-16,2011-02-15
alert(datelist[0]); //undefined
Run Code Online (Sandbox Code Playgroud)
有什么收获?
它排除了空值.这就是为什么datalist[0]是undefined.
索引的0值为空,因此datelist[0] = this.value;不会执行.数组中设置的唯一值是带键2和3键0,1以及所有键>3 undefined.
如果包含这些值,则不会得到undefined一个空字符串.
您不应该使用索引向数组添加值.push()他们:
$(".datepicker").each(function(i) {
if (this.value!="") {datelist.push(this.value);}
});
Run Code Online (Sandbox Code Playgroud)
也就是说,更简洁的方法是:
var datelist = $('.datepicker[value!=""]').map(function() {
return this.value;
}).get();
Run Code Online (Sandbox Code Playgroud)