Javascript对象在数组中但无法访问它

时间:2012-10-23 18:02:19

标签: javascript arrays date object

我有一个for循环,它在响应中迭代通过currentObject。

此代码:

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;
                        }

忘记添加,我正在使用jQuery 1.8.2,我认为处理日期的方式与1.7不同(但我不能使用1.7,因为我有很多其他问题!)

这是console.log(响应)的输出: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

2 个答案:

答案 0 :(得分:0)

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

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

我打赌它不包括start,即使没有stringify它也可以。您的回复是异步的,您过早访问start(您的代码未显示该部分)。

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

console.log(response[currentObject][0].start);

答案 1 :(得分:-1)

使用

  

currentObject.start = parsedDateStart

而不是

  

response [currentObject] .start = parsedDateStart