JavaScript 数组 - 使用时长度为 0,但 Chrome 可以看到正确的长度

标签 javascript jquery arrays

作为一个 JavaScript 新手,这让我简直要发疯了。

我有一个名为 arrayA 的数组,其中包含以下数据(在我的实际代码中,我使用 [] 声明 arrayA,然后使用 $.getJSON 获取包含数据的文件):

 arrayA = [
    {
        "Key":  "Key1",
        "Value":  {
                      "info1":  "298431",
                      "info2":  "55.035",
                      "info3":  "11.375",
                  },
        "Name":  "Key1"
    }
]

在我的 HTML 页面中,我有一个脚本标记/部分,它是在那里定义的。在 arrayA 之后,我有一个名为 funcA() 的函数,我在其中尝试执行“操作”,其中包括查找“Key1”的索引等操作。

在行中执行 console.log 时,它始终报告为 0,但使用 Chrome 控制台检查长度时,它会报告正确的对象数量 (8950)。

不太确定问题出在哪里。潜在的变量范围或 arrayA 初始化和加载数据的方式?有人可以帮忙吗?

为了完整性:

<script type="text/javascript">
var arrayA = [];

$.getJSON('./source.json', function(data) {
    arrayA = data;                  
});

function funcA() {
    //Do stuff to find indexOf "Key1"
}
</script>

/D

最佳答案

问题很可能是当 funcA() 运行时,数据尚不可用。

试试这个:

<script type="text/javascript">
var arrayA = [];

$.getJSON('./source.json', function(data) {
    arrayA = data;                  
    console.log('Data was loaded', arrayA);
});

function funcA() {
    //Do stuff to find indexOf "Key1"
    console.log('funcA() ran');
}
</script>

然后您将看到事情发生的顺序。当然, $.getJSON 是一个异步函数,你不能依赖事情总是以相同的顺序发生。因此,您应该研究 Promise 或回调,而不是使用全局变量。

关于JavaScript 数组 - 使用时长度为 0,但 Chrome 可以看到正确的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41536720/

相关文章:

javascript - Vaadin - 从客户端 javascript 组件请求布局

php - 使用 Acrobat Javascript 为 PDF 分配唯一的契约(Contract)编号

javascript - 跨浏览器平滑滚动?

jquery - 到达页脚后停止 float 侧边栏。 jQuery 航点

jquery - JQuery 文件上传演示中限制文件类型

javascript - jQuery slideToggle() 无法在显示为 :none 的 div 上工作

python - NumPy 使用 reshape 函数 reshape 数组

javascript - 为什么在使用angularjs的promise时无法将数据插入数组?

C 中的紧凑数组

javascript - Backbone.js 获取一个列表以确保某个模型仅存在一个实例