【问题标题】:I can't put JSON data in an Array [duplicate]我不能将 JSON 数据放入数组中 [重复]
【发布时间】:2019-03-06 16:16:13
【问题描述】:

我无法打印数组“valores”中的任何项目。我不知道发生了什么。我在做一个 sintaxis 错误吗?当我执行 console.log(valores.length) 结果为 0.

var valores = new Array();

fetch("https://mindicador.cl/api")
.then (data => data.json())
.then (data => {
    valores["dolar"] = data.dolar.valor;
    valores["euro"] = data.euro.valor;
    valores["utm"] = data.utm.valor;
    valores["uf"] = data.uf.valor;
});

for (var index in valores){
    document.write(valores[index]+"<br>");
}

【问题讨论】:

  • 给定的代码从不定义valores - 你在哪里以及如何定义它?另外:fetch() 是一个异步操作,因此在上面的代码中,for 循环将在fetch() 之后的任何then() 回调之前执行。
  • valores 应该是一个对象 ({}) 而不是一个数组 ([])

标签: javascript html arrays json multidimensional-array


【解决方案1】:

您的问题是时间。您正在向服务器承诺请求信息并填写 valores 数组。但问题是你正在执行你的 for 循环:

for (var index in valores){
    document.write(valores[index]+"<br>");
}

您需要在then 方法中处理您的document.write

.then (data => {
    valores["dolar"] = data.dolar.valor;
    valores["euro"] = data.euro.valor;
    valores["utm"] = data.utm.valor;
    valores["uf"] = data.uf.valor;
    for (var index in valores){
        document.write(valores[index]+"<br>");
    }
});

【讨论】:

    【解决方案2】:

    我认为您对 Array 的作用存在误解。尝试使用对象而不是数组:

    var valores = new Object();
    fetch("https://mindicador.cl/api")
    .then (data => data.json())
    .then (data => {
        valores["dolar"] = data.dolar.valor;
        valores["euro"] = data.euro.valor;
        valores["utm"] = data.utm.valor;
        valores["uf"] = data.uf.valor;
    
        for (var key in Object.keys(valores)){
            document.write(valores[key]+"<br>");
        }
    
    });
    

    如果您需要更多解释,请告诉我。我很乐意详细说明。

    编辑:值得注意的是,正如其他人指出的那样,您也没有遵守数据的回调。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-06
      • 2018-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      相关资源
      最近更新 更多