[英]Array Says Its Length Is 0 But Console Says Otherwise
下午好,我的代码遇到了问题:我有一个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数组的.length
属性仅计算名称为字符串的属性,这些字符串看起来像整数(例如“ 0”,“ 1”等)。 您可以将所需的任何属性添加到数组实例,但是只有数字属性会影响数组的长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.