javascript - 数组显示其长度为 0 但控制台显示否则

标签 javascript arrays canvas console

下午好, 我的代码遇到了问题: 我有一个 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,当我折叠它时,它的源是正确的源。那么,这是怎么回事呢?这是一个小故障还是我做了一些我以前不知道的错误? 提前致谢。

This is what comes up on the console

最佳答案

这是因为 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/

相关文章:

javascript - 使用 ajax 时 Dynatree 忽略 select 属性

javascript - 无法读取数据数组。获取: Uncaught Error: Unknown type of column header: 1

c++ - 如何在 C 中将字节数组转换为 double?

javascript - 按属性值对对象数组进行排序

javascript - paper.js - 使用闭合路径实现更平滑的边缘

javascript - 使用箭头键在 Canvas 中移动形状

java - 在错误的位置绘制文本

JavaScript,html5 : how to dynamically create a Vignette effect?

javascript - jQuery Mobile 遗漏了 vclick/fastclick 上的 css 效果

javascript - 谷歌地图渲染不正确,无法用已经给出的答案解决这个问题