数组表示其长度为0但是控制台表示不然

use*_*553 0 javascript arrays console canvas

下午好,我遇到了我的代码问题:我有一个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];
        }
    }
Run Code Online (Sandbox Code Playgroud)

代码运行正常.我怎么知道的?好吧,我继续使用JavaScript控制台并检查数组的值.它说框架[0],但是当我折叠它时,它有Frame0,当我折叠它时,它所拥有的源是正确的源.那么,这是怎么回事?这是一个小故障还是我做错了以前我不知道的事情?提前致谢.

这是控制台上出现的内容

Roc*_*mat 5

那是因为JavaScript只有数字数组.它具有关联数组.

执行:时this.Frames["Frame" + i] = Sources[i];,您要做的是向数组添加属性(在JavaScript中,一切都是对象,因此可以具有属性).你实际上并没有推动阵列.

你可以做的一件事就是使用一个对象:this.Frames = {};.

或者,您可以.push()将其用作数组并将其用作数字数组.

this.Frames[i] = Sources[i];
// or
this.Frames.push(Sources[i]);
Run Code Online (Sandbox Code Playgroud)