数组说它的长度是 0 但控制台说不是
Array Says Its Length Is 0 But Console Says Otherwise
下午好,
我的代码遇到问题:
我有一个用于向数组变量添加值的函数,但每当我 运行 页面时,它都会给我一个错误,指出数组为空。下面是向数组添加值的代码:
if(this.Type === "Image") {
this.Frames = [];
for(var i = 0; i <= Sources.length - 1; i++) {
var Img = new Image();
Img.src = Sources[i];
this.Frames["Frame" = i] = Img;
}
} else {
this.Frames = [];
for(var i = 0; i <= Sources.length - 1; i++) {
this.Frames["Frame" + i] = Sources[i];
}
}
代码 运行 没问题。我怎么知道的?好吧,我继续 JavaScript 控制台并检查数组的值。它说 Frames[0],但当我折叠它时,它有 Frame0,当我折叠它时,它的来源是正确的来源。那么,这是怎么回事?这是一个小故障还是我做错了我以前不知道的事情?
提前致谢。
JavaScript 数组的 .length
属性 仅计算名称为看起来像整数(如“0”、“1”等)的字符串的属性。您可以向数组实例添加任何您想要的属性,但只有数字属性会影响数组的长度。
那是因为 JavaScript 只有 numeric 数组。它没有有关联数组。
当您执行以下操作时:this.Frames["Frame" + i] = Sources[i];
,您所做的是将 属性 添加到数组中(在 JavaScript 中,一切都是一个对象,因此可以具有属性)。您实际上并不是 将 推入数组。
您可以做的一件事是改用对象:this.Frames = {};
.
或者,您可以 .push()
加入数组并将其用作数值数组。
this.Frames[i] = Sources[i];
// or
this.Frames.push(Sources[i]);
下午好, 我的代码遇到问题: 我有一个用于向数组变量添加值的函数,但每当我 运行 页面时,它都会给我一个错误,指出数组为空。下面是向数组添加值的代码:
if(this.Type === "Image") {
this.Frames = [];
for(var i = 0; i <= Sources.length - 1; i++) {
var Img = new Image();
Img.src = Sources[i];
this.Frames["Frame" = i] = Img;
}
} else {
this.Frames = [];
for(var i = 0; i <= Sources.length - 1; i++) {
this.Frames["Frame" + i] = Sources[i];
}
}
代码 运行 没问题。我怎么知道的?好吧,我继续 JavaScript 控制台并检查数组的值。它说 Frames[0],但当我折叠它时,它有 Frame0,当我折叠它时,它的来源是正确的来源。那么,这是怎么回事?这是一个小故障还是我做错了我以前不知道的事情? 提前致谢。
JavaScript 数组的 .length
属性 仅计算名称为看起来像整数(如“0”、“1”等)的字符串的属性。您可以向数组实例添加任何您想要的属性,但只有数字属性会影响数组的长度。
那是因为 JavaScript 只有 numeric 数组。它没有有关联数组。
当您执行以下操作时:this.Frames["Frame" + i] = Sources[i];
,您所做的是将 属性 添加到数组中(在 JavaScript 中,一切都是一个对象,因此可以具有属性)。您实际上并不是 将 推入数组。
您可以做的一件事是改用对象:this.Frames = {};
.
或者,您可以 .push()
加入数组并将其用作数值数组。
this.Frames[i] = Sources[i];
// or
this.Frames.push(Sources[i]);