在我的代码中,我使用AJAX来填充一个数组,这是完美的工作,但是当我在其外部给出0时使用长度。
看看这段代码,评论显示我的意思。
$.ajax({
url: "url",
type : "GET",
//contentType: "application/json",
//dataType: "json",
data : { firstDate : "date1",
secondDate : "date2"}
//student_name : $('#id_student_name').val()
}).then(function(data) {
var obj = JSON.parse(data);
obj.results.forEach(element => {
console.log(element.DATEEND);
res.push(element);
dates.push(element.DATESTART);
});
});
var days = ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'];
var i;
function min_date(all_dates) {
var min_dt = all_dates[0],
min_dtObj = new Date(all_dates[0]);
all_dates.forEach(function(dt, index){
if ( new Date( dt ) < min_dtObj)
{
min_dt = dt;
min_dtObj = new Date(dt);
}
});
return min_dt;
}
var d = [];
console.log(res.length + " "); // this give 0
for (var a = 0; a < res.length; a++) {
d[a] = res[a].DATESTART;
console.log(res[a].DATESTART);
}
console.log(d);//this is vide
console.log(res); //this give all element
.
.
.
答案 0 :(得分:0)
如果将非原始元素记录到控制台,则会存储其引用以进行记录。因此,控制台中显示的内容可能会反映对象的后期状态,然后在您执行日志记录时具有该状态。
此fiddle具有相同的行为,没有任何异步代码:
var a = []
console.dir(a.length)
console.dir(a) // the array a does not have any elements a the time
// you do the logging but the console will show an
// array with 10 elements
for (var i = 0; i < 10; i++) {
a.push(1)
}
您甚至可以将其扩展为这样的示例:
var a = []
console.dir(a.length)
console.dir(a)
for (var i = 0; i < 4; i++) {
a.push(1)
}
console.dir(a)
for (var i = 0; i < 4; i++) {
a.push(2)
}
两个日志都将显示元素的最新状态,而不是记录的状态。因此,如果要查看元素所包含的实际值,则需要在日志记录后立即添加断点或debugger
语句。或者您需要将对象转换为字符串。