You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用async/await读取GitHub文本学生数据并解析为对象数组渲染到页面

实现方案

你原有代码的核心问题是文本拆分和分组解析逻辑错误,且存在大量无效的Student实例化代码,以下是修正后的完整可运行代码:

const button = document.getElementById("btn");
const loader = document.getElementById("loading");
const displayArea = document.getElementById("data");

button.addEventListener("click", function () {
  getData();
})

class Student {
  constructor(fullName, address, phone, course) {
    this.fullName = fullName;
    this.address = address;
    this.phone = phone;
    this.course = course;
  }

  // 调整为返回HTML格式的信息,方便页面渲染
  getInfoHtml() {
    return `
      <div style="margin: 15px 0; padding-bottom: 10px; border-bottom: 1px solid #eee;">
        <p>姓名:${this.fullName}</p>
        <p>地址:${this.address}</p>
        <p>电话:${this.phone}</p>
        <p>课程:${this.course}</p>
      </div>
    `
  }
}

async function getData() {
  loader.style.display = "inline-block";
  try {
    const response = await fetch(`https://v-dresevic.github.io/Advanced-JavaScript-Programming/data/students.txt`);
    if (response.status !== 200) {
      throw new Error("文件读取出错");
    }
    const text = await response.text();
    // 按换行拆分所有行,过滤空行避免文件末尾空行干扰解析
    const lineArr = text.split('\n').filter(line => line.trim() !== '');
    const students = [];
    // 每4行对应1个学生的信息,分组实例化Student对象
    for(let i = 0; i < lineArr.length; i += 4) {
      const student = new Student(
        lineArr[i],
        lineArr[i+1],
        lineArr[i+2],
        lineArr[i+3]
      );
      students.push(student);
    }
    // 拼接所有学生信息渲染到页面
    displayArea.innerHTML = students.map(s => s.getInfoHtml()).join('');
  } catch (err) {
    displayArea.innerHTML = "未知错误:" + err;
  } finally {
    loader.style.display = "none";
  }
}

核心修改说明

  • 删除了原有代码中无效的空Student实例化代码,无参数的空实例不会存储任何有效学生数据
  • 修正文本拆分逻辑:先按换行符切割所有内容行,过滤空行后每4行一组生成Student实例,完全匹配数据格式要求
  • 调整了Student类的输出方法返回HTML结构,适配网页渲染场景,也可根据需求保留纯文本输出,渲染时将换行符替换为<br>即可
  • 完全保留了要求的async/await异步逻辑实现,符合作业规范

内容的提问来源于stack exchange,提问作者user14656865

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:39:04