毕业设计中数据分类(党政管理)

一个需求困扰多天,今天中遇解决,期间问过同学,百度过,咨询过老师,业界大佬,最终还是解决了。!!!

 

1. 这是sql语句查询出来的结果(查询出来的数据没有分类导致name重复)

SELECT a.wno, a.name,a.id, a.title, m_test_list.score FROM (
SELECT m_admin.wno,m_admin.name,m_test.id,m_test.title
FROM m_test LEFT JOIN m_admin ON m_admin.party_branch = m_test.party_branch WHERE m_admin.party_branch = 1) a
LEFT JOIN m_test_list ON a.wno = m_test_list.userId AND a.id = m_test_list.testId ORDER BY a.wno

 

2.后端对数据进行分类代码

let links = await this.app.mysql.query(sql); // 这是上边数据库查询到的数据,此时没有进行分类
    links.forEach(element => {
      if (element.score == null) {
        element.score = 0
      }
    });
// 对数据进行分类 let map = {}, dest = []; for (let i = 0; i < links.length; i++) { let ai = links[i]; if (!map[ai.wno]) { dest.push({ wno: ai.wno, arrdata: [ai] }) map[ai.id] = ai; } else { for (let j = 0; j < dest.length; j++) { let dj = dest[j]; if (dj.wno == ai.wno) { dj.arrdata.push(ai); break; } } } }
// 呈现的效果为一个数组(从对象变为数组)

3.对数据进行二次封装

  let objArr = [];
    for (let i = 0; i < nameArr.length; i++) {
      let tmpObj = {};
      let num = 0;
      tmpObj['name'] = nameArr[i].name;
      let wno = nameArr[i].wno;
      for (let j = 0; j < dest.length; j++) {
        if (wno == dest[j].wno) {
          let str = `test${num}`;
          tmpObj[str] = dest[j].arrdata[0].score;
          num++;
        }
      }
      objArr.push(tmpObj);
    }

  数据结构图:

 

最终呈现的效果:

posted @ 2021-05-01 10:44  ayong6  阅读(79)  评论(0)    收藏  举报