下午好, 我的代码遇到了问题: 我有一个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控制台并检查数组的值。它说框架[0],但是当我折叠它时,它有Frame0,当我折叠它时,它拥有的源是正确的源。那么,这是怎么回事?这是一个小故障还是我做错了以前我不知道的事情? 提前谢谢。
答案 0 :(得分:5)
那是因为JavaScript只有数字数组。它 不 具有关联数组。
执行:this.Frames["Frame" + i] = Sources[i];
时,您正在做的是向数组中添加属性(在JavaScript中,所有内容都是对象,因此可以具有属性)。你实际上并没有推送到数组。
您可以做的一件事是改为使用对象:this.Frames = {};
。
或者,您可以.push()
到数组上并将其用作数字数组。
this.Frames[i] = Sources[i];
// or
this.Frames.push(Sources[i]);
答案 1 :(得分:0)
JavaScript数组的.length
属性仅计算名称为整数字符串的属性(如“0”,“1”等)。您可以向数组实例添加所需的任何属性,但只有数字属性会影响数组的长度。