为什么js里的for循环只执行了一次

我用axios从后端get到的结果是一个数组。
我想遍历出来。长度明明是16为什么,只执行了一次呢?
代码如下:
image.png
image.png

`listpc() {

this.$axios.get("/exam/listPublicRepo").then(response => {  
    console.log(response.data.result);  

if (response.data.result) {

        console.log(this.tableData);  

var arr = response.data.result;
console.log("arr.length=" + arr.length);
for (var i = 0; i < arr.length; i++) {

            this.tableData\[i\].id \= arr\[i\].id;  

this.tableData[i].name = arr[i].name;
this.tableData[i].description = arr[i].description;
this.tableData[i].categories = arr[i].categories;
this.tableData[i].creatTime = arr[i].creatTime;
console.log(i);
// this.tableData[i] = [{
// id: arr[i].id, // name: arr[i].name, // description: arr[i].description, // categories: arr[i].categories, // creatTime: arr[i].creatTime, // }]; }

    } else {  
        console.log("获取题库信息失败: " \+ response.data.msg);  

}

    // }).catch(function (jqXHR, textStatus, errorThrown) {  

// console.log(textStatus); // console.log(errorThrown); // }); }).catch(function (error) {

    console.log(error);  

})
}`

阅读 8.6k
3 个回答

第二次循环的时候报错了吧。
this.tableData[1]是undefined, 赋值的时候报错了;
为啥不直接把arr赋值给this.tableData呢

试试把你截图中的for循环改成下面这个样子

this.tableData = arr.map(item => {
  return {
    id: item.id,
    ...item,
    // 自己补齐
  };
});

因为你的截图不全,如果tableDataary没有不匹配键名的话可以直接 this.tableData = arr

因为你的tableData里的对象数组里只有一个对象,所以只执行一次,如果有两个对象你的循环会执行两次(你可以试试)
解决方法向数组中push对象
image.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题