如何解决无法从未定义的状态读取属性ScheduleDate
| var AppPatientsList = JSON.parse(JSON RESPONSE);
var AppPatientsListSort = AppPatientsList.sort(function(a,b){
return a.firstName.toLowerCase() <b.firstName.toLowerCase()
? -1
: a.firstName.toLowerCase()>b.firstName.toLowerCase()
? 1 : 0;
});
var DataArray = [];
for (var i = 0; i < AppPatientsListSort.length; ++i) {
if (AppPatientsListSort[i].firstName === search.value) {
var appointment = {};
appointment.PatientID = AppPatientsListSort[i].PatientID;
appointment.ScheduleDate = AppPatientsListSort[i].ScheduleDate;
alert(appointment.ScheduleDate); // Works fine,i get the date...
}
DataArray[i] = appointment;
}
var RowIndex = 0;
var ScheduleDate = \"\";
for (i = 0,len = DataArray.length; i < len; i++) {
// Throws me error in this place... WHY?
if (ScheduleDate != DataArray[i].ScheduleDate) {
ScheduleDate = DataArray[i].ScheduleDate;
}
}
这段代码有什么问题,为什么我无法访问ScheduleDate?
解决方法
您仅在
if
子句中时才初始化appointment
变量,但是在每次迭代时都将其添加到数组中。
如果AppPatientsListSort
的第一个元素没有要搜索的值,,4ѭ将包含undefined
。
在第二个循环中,然后尝试访问DataArray[0].ScheduleDate
,这将引发错误。
更新:
更重要的是,由于JavaScript没有块作用域,因此可能是“ 7”中的多个条目指向同一个“ 1”对象。
根据您要执行的操作,可能需要进行的所有更改
DataArray[i] = appointment;
至
DataArray.push(appointment);
并将此语句移到“ 2”子句中,以便仅添加符合搜索条件的约会。
附加说明:要查看ѭ7包含的内容,请在第二个循环之前输入ѭ13并检查其内容(假设您使用的是Chrome或Safari,请使用Firebug for Firefox)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。