数组不会在JavaScript中更新

时间:2017-08-17 23:09:28

标签: javascript arrays json

我有这个代码。我需要在数组中看到 y 在for语句中指定的对象(增加和减少)。在第一个console.log中,我可以看到数组已更新,但在第二个时它是空的。

function myfunction() {
var y = new Array(2);
    $.getJSON('../docs/natures.json', function(data) {
        var nature = document.getElementById("nature").value;
        for( var i = 0; i< data.natures.length; i++)
        {
            var x = data.natures[i];
            if((nature.localeCompare(x.name)) == 0)
            {
                y=[x.increase];
                console.log(y[0]);
                y.push(x.decrease);
                console.log(y[1]);
                break;
            }
        }   
        console.log(y);  <!- first ->
    });
console.log(y);  <!- second ->
}

我的JSON文件是这样的:

{"natures":[
{
"name":"some name",
"increase": "some increase",
"decrease": "some decrease"
},
{...}
]}

My results in the console

1 个答案:

答案 0 :(得分:1)

jQuery.getJSON是异步的,传递给它的回调函数只会在请求完成时运行。

console.log(y);  <!- second -> 

发生在

之前