我在尝试检查数组中是否存在日期时遇到了麻烦。
for(var i = 0; i< crisislist.length; i++){
hazecounter = 1;
if(crisislist[i].category == 1){
if(crisislist[i].date != crisislist[i+1].date) {
hazelabel.push(crisislist[i].date);
}else{
hazecounter++;
}
hazedata.push(hazecounter);
}
}
日期的样本数据是:
["01-02-2017", "22-03-2017", "22-03-2017", "07-08-2017"]
hazelabel,hazedata的预期输出应为:
hazelabel:[“01-02-2017”,“22-03-2017”,“07-08-2017”] hazedata:[1,2,1]
使用上面的代码,当我检查数组中的最后一个元素并尝试进行比较时,它会向我抛出一条错误消息:
Uncaught TypeError: Cannot read property 'date' of undefined
我认为这是因为当我到达数组的最后一个元素时,我试图找到危险列表[I + 1] .date,它找不到它,从而找不到错误消息。
知道怎么解决这个问题吗?提前谢谢!
答案 0 :(得分:0)
你只需要检查到倒数第二:
for(var i = 0; i< (crisislist.length-1); i++){
hazecounter = 1;
if(crisislist[i].category == 1){
if(crisislist[i].date != crisislist[i+1].date) {
hazelabel.push(crisislist[i].date);
if (crisislist.length-2 == i)
{
hazelabel.push(crisislist[i+1].date);
}
}else{
hazecounter++;
}
hazedata.push(hazecounter);
}
}
答案 1 :(得分:0)
您的if语句将成为一个问题。
if(crisislist[i].date != crisislist[i+1].date) {
您正在循环中访问危险列表[i + 1]并转到&lt; crisislist.length。这意味着如果你有一个大小为4的数组,你的循环将一直持续到i = 3,但你从数组中访问i + 1(危机列表[4]),这将是未定义的。
尝试更改for循环以转至crisis.length-1
答案 2 :(得分:0)
仅当crisislist[i+1].date
未指向最后一个元素时,您才能访问i
。
另请注意,要获得所需的结果,您需要移动if块内的hazedata.push
并将hazecounter
的初始化放在循环前面。
var hazecounter = 1;
for (var i = 0; i< crisislist.length; i++) {
if (crisislist[i].category == 1) {
if (i == crisislist.length-1 || crisislist[i].date != crisislist[i+1].date) {
hazelabel.push(crisislist[i].date);
hazedata.push(hazecounter);
hazeCounter = 1;
} else {
hazecounter++;
}
}
}
答案 3 :(得分:0)
检查该代码。如果您有任何疑问,请添加评论:)在我的解决方案中,日期不必排序。
$(document).ready(function(){
$("button").click(function(){
var $this = $(this);
$this.attr('value', $this.attr('value') === "0" ? "1" : "0");
alert("The button val is now " + $this.attr('value'));
});
});