Javascript对象位于数组中,但无法访问它
我有一个for循环,它在响应中遍历currentObject 此代码:Javascript对象位于数组中,但无法访问它,javascript,arrays,date,object,Javascript,Arrays,Date,Object,我有一个for循环,它在响应中遍历currentObject 此代码: console.log(response[currentObject]); 清楚地显示响应[currentObject]的其他属性中有start 但是,此代码告诉我变量未定义: console.log(response[currentObject].start); 为什么会这样?请注意,start是一个日期变量 以下是整个功能: function(response) {
console.log(response[currentObject]);
清楚地显示响应[currentObject]的其他属性中有start
但是,此代码告诉我变量未定义:
console.log(response[currentObject].start);
为什么会这样?请注意,start是一个日期变量
以下是整个功能:
function(response) {
for (var currentObject in response) {
//Parsing the data before its used
//"17\/10\/2012 20:55:00"
var phpStartDate = response[currentObject].start;
console.log(response[currentObject]);
var phpStopDate = response[currentObject].stop;
var datePartsStart = phpStartDate.match(/(\d+)/g);
var datePartsStop = phpStopDate.match(/(\d+)/g);
var parsedDateStart = new Date(datePartsStart[2], datePartsStart[1], datePartsStart[0], datePartsStart[3], datePartsStart[4], datePartsStart[5]);
var parsedDateStop = new Date(datePartsStop[2], datePartsStop[1], datePartsStop[0], datePartsStop[3], datePartsStop[4], datePartsStop[5]);
response[currentObject].start = parsedDateStart;
response[currentObject].stop = parsedDateStop;
//debugger;
};
return response;
}
忘记添加了,我使用的是jQuery1.8.2,我相信它处理日期的方式与1.7不同,但我不能使用1.7,因为我还有一大堆其他问题
下面是console.logresponse:Object的输出
data: Array[3]
0: Object
hourly: "4.00"
id: "40"
staff: "James Hadley"
start: "2012-09-25 00:00:00"
stop: "2012-09-27 00:00:00"
__proto__: Object
1: Object
hourly: "25.00"
id: "39"
staff: "James Hadley"
start: "2012-10-17 21:12:00"
stop: "2012-10-26 02:30:00"
__proto__: Object
2: Object
length: 3
__proto__: Array[0]
total: 3
__proto__: Object
使用
currentObject.start=ParsedDataStart
而不是
响应[currentObject].start=ParsedDataStart
我想这是一个时间问题,因为console.log对象是活动的。试一试 我打赌它不包括开始,甚至思想没有严格化它。您的响应是异步的,并且您的访问开始得太早—您的代码没有显示该部分 现在你的评论很明显。它是一个数组,您缺少和索引,例如0
console.log(response[currentObject][0].start);
那么响应是JSON?您能显示响应和响应类型的输出吗?是的,它是JSON。typeof显示对象。我现在正在编辑上面的回复。currentObject是关键的可怕名称,我知道,不是值,所以这不起作用。[{id:40,开始:2012-09-25 00:00:00,停止:2012-09-27 00:00:00:00,每小时:4.00,工作人员:James Hadley},{id:39,开始:2012-10-17 21:12:00,停止:2012-10-26 02:30:00,每小时:25.00,工作人员:James Hadley},{id:37,开始:2012-12-20 00:00:00,停止:2012-12-20 00:00:00,每小时:25.00,工作人员:詹姆斯·哈德利}]真不敢相信我错过了。谢谢!
console.log(response[currentObject][0].start);