下午好, 我的代码遇到了问题: 我有一个 for 函数向数组变量添加值,但每当我运行该页面时,它都会给出一个错误,指出数组为空。以下是将值添加到数组的代码:
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 只有数字数组。它没有有关联数组。
当您执行以下操作时:this.Frames["Frame"+ i] = Sources[i];
,您所做的就是向数组添加一个属性(在 JavaScript 中,一切都是对象,因此都可以具有属性)。您实际上并没有推送到数组。
您可以做的一件事是使用对象来代替:this.Frames = {};
。
或者,您可以 .push()
到数组上并将其用作数值数组。
this.Frames[i] = Sources[i];
// or
this.Frames.push(Sources[i]);
关于javascript - 数组显示其长度为 0 但控制台显示否则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32574685/