繁体   English   中英

数组说它的长度是0,但是控制台说不

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM