javascript - 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 接收到的所有数据,但只console.log(data[i])
打印了数组的第一个元素,我不明白为什么。
解决方案
i
您正在多个地方使用单个全局索引变量进行循环。
您的第一个循环调用Run
,它运行另一个循环以完成递增i
变量。
i
每次开始你的循环声明一个本地:
for(var i=0;...)
推荐阅读
- android - ImageView RecyclerView 延迟加载
- javascript - 点击详细信息上的Vue列表项
- javascript - MathQuill:如果乳胶错误,如何捕获粘贴的乳胶?
- tensorflow - 为什么不同数据类型的 GPU 性能变化如此之大
- javascript - 从 JS 树中创建 Python 函数
- c++ - using 声明是否应该能够引用友元函数
- ms-access - 如何通过宏用访问表中的数据填充列
- redux - 用 jest 和酵素测试从 dispatch action 返回的 Promise.all
- java - 即使在相等的按钮之后如何继续计算
- javascript - 是否可以从单个文件 comp 向全局 Vue 组件添加内容?