我无法将JSON数据放入数组中

时间:2018-10-01 14:13:16

标签: javascript html arrays json multidimensional-array

我无法打印“ 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>");
}

2 个答案:

答案 0 :(得分:5)

您的问题是时间。您向服务器承诺信息,并填充valores数组。但是问题是您在以下时间立即执行for循环:

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

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

.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>");
    }
});

答案 1 :(得分: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>");
    }

});

如果您需要更多说明,请告诉我。我很乐于阐述。

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