0

我有一个 for 循环,它遍历 currentObject 作为响应。

这段代码:

console.log(response[currentObject]);

清楚地表明 response[currentObject] 具有“start”等属性。

但是,这段代码告诉我变量未定义:

console.log(response[currentObject].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;
                        }

忘了补充,我使用的是 jQuery 1.8.2,我相信它处理日期的方式与 1.7 不同(但我不能使用 1.7,因为我遇到了一大堆其他问题!)

这是 console.log(response):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
4

2 回答 2

0

我想这是一个时间问题,因为 console.log 对象是live。尝试

console.log(JSON.stringify(response[currentObject]));

我敢打赌,start没有它,它甚至不包括思想stringify。您的响应是异步的,并且您访问start得太早(您的代码没有显示该部分)。

现在有了你的评论,这很明显。这是一个数组,您缺少索引,例如 0。

console.log(response[currentObject][0].start);
于 2012-10-23T18:10:21.120 回答
-1

采用

currentObject.start = parsedDateStart

代替

response[currentObject].start = parsedDateStart

于 2012-10-23T18:04:27.393 回答