猿问

Javascript for循环在结束前停止

我有一个非常简单的自制 API,它读取服务器上一些文件的内容,解析它们并以 JSON 发送它们的内容。


我的网页使用 Ajax 调用 API,读取数据并将它们存储在自定义对象上。问题是,无论我在 JSON 中解析了多少文件,只有第一个文件被处理为我的 Javascript 代码。


runs = [];


function Solution(values) {

    this.number = values[0]

    this.weight = values[1]

    this.value = values[2]

    this.score = values[3]

}


function DateValue(date) {

    regex = new RegExp(/(\d{4})-(\d{1,2})-(\d{1,2})-(\d{1,2}):(\d{1,2}):(\d{1,2})-(\d{1,2})/)

    dateArray = date.split(regex)

    this.year = dateArray[1]

    this.month = dateArray[2]

    this.day = dateArray[3]

    this.hour = dateArray[4]

    this.minutes = dateArray[5]

    this.secondes = dateArray[6]

}           


function Run(values) {

    this.algorithm = values["log"]["Algorithm used"]

    this.weight = values["log"]["Weight"]

    this.value = values["log"]["Value"]

    this.date = new DateValue(values["log"]["Date"])

    this.solutions = []

    for(i = 0; i < values["datas"].length; i++) {

        this.solutions.push(new Solution(values["datas"][i]))

    }

}


$.ajax({

    url: 'api.php', // the data sent by the API is a valid JSON

    dataType: 'json',

    success: function(data, status) {

        console.log(data);

        for(i = 0; i < data.length; i++) {

            console.log(data[i]);

            var run = new Run(data[i])

            runs.push(run);

        }

    }

});

在console.log(data)for循环正确打印所有从API收到的DATAS,但之前console.log(data[i])只打印数组的第一个元素,我不明白为什么。


Qyouu
浏览 155回答 1
1回答

繁星coding

您i在多个位置使用单个全局索引变量进行循环。您的第一个循环调用Run,它运行另一个循环以完成增加i变量。开始你的循环,i每次都声明一个本地:for(var i=0;...)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答